数据结构:栈子系统

  • 格式:doc
  • 大小:41.50 KB
  • 文档页数:8

下载文档原格式

  / 25
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*

*题目:设计一个字符型的链栈。

* 编写进栈、出栈、显示栈中全部元素的程序。

*题目:编写一个把十进制整数转换为二进制数的应用程序

*题目:编写一个把中缀表达式转换为后缀表达式(逆波兰式)的应用程序*题目:设计一个选择式菜单,以菜单方式选择上述操作。

* 栈子系统

* *******************************

* * 1------进栈*

* * 2------出栈*

* * 3------显示*

* * 4------数值转换*

* * 5------逆波兰式*

* * 0------返回*

* *******************************

* 请选择菜单号(0--5):

*/

#include

#include

#define STACKMAX 50

typedef struct sta //栈的存储结构

{

int data;

struct sta *next;

}stackNode;

typedef struct //指向栈顶的指针

{

stackNode *top;

}linkStack;

void conversion(int n);

void push(linkStack *p, int x);

int pop(linkStack *p);

void showStack(linkStack *p);

void sufflx();

/*************************************************

Function: main()

Description: 主调函数

Calls: push()

pop()

showStack()

conversion()

Input: NULL

Return: void

Others: NULL

*************************************************/

void main()

{

int x, choice, i = 1;

linkStack p;

p.top = NULL; //置空栈

while (i)

{

printf("\n 栈子系统\n");

printf("*******************************\n");

printf("* 1------进栈*\n");

printf("* 2------出栈*\n");

printf("* 3------显示*\n");

printf("* 4------数值转换*\n");

printf("* 5------逆波兰式*\n");

printf("* 0------返回*\n");

printf("*******************************\n");

printf("请选择菜单号(0--5):");

fflush(stdin); //清空输入的缓存区

choice = getchar();

switch(choice)

{

case '1':

while (1)

{

printf("请输入一个整数(‘0’表示结束)并按回车:");

scanf("%d", &x);

if (x != 0)

{

push(&p, x); //入栈

}

else

{

break;

}

}

break;

case '2':

x = pop(&p); //出栈

if (x > 0)

{

printf("出栈元素为:%d\n", x);

}

else

{

printf("栈为空,没有元素可以出栈!\n");

}

break;

case '3':

showStack(&p); //显示栈元素

break;

case '4':

printf("请输入十进制数:");

scanf("%d", &x);

conversion(x); //数值转换

break;

case '5':

sufflx();

break;

case '0':

i = 0;

break;

default:

i = 1;

break;

}

}

}

/************************************************* Function: conversion()

Description: 十进制数转换二进制数

Calls: push()

pop()

Input: n :输入的要转换的数

Return: void

Others: NULL

*************************************************/