资源描述:
《bx100436周玲实验3:栈子系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、验证性实验3:栈子系统班级学号BX100436姓名周玲1.实验目的(1)掌握栈的特点及其描述方法。(2)用链式存储结构实现一个栈。(3)掌握建栈的各种基本操作。(4)掌握栈的几个典型应用的算法。2.实验内容(1)设计一个字符型的链栈。(2)编写进栈、出栈、显示栈中全部元素的程序。(3)编写一个把十进制整数转换成二进制数的应用程序。(4)编写一个把中缀表达式转换成后缀表达式(逆波兰式)的应用程序。(5)设计一个选择式菜单,以菜单方式选择上述操作。栈子系统*********************************
2、**************1---------进栈**2---------出栈**3---------显示**4---------数制转换**5---------逆波兰式**0---------返回***********************************************请选择菜单号(0--5):3.实验程序(附zhan.cpp)#include#include#defineSTACKMAX100typedefstructstacknode{intdata;
3、structstacknode*next;}StackNode;typedefstruct{StackNode*top;}LinkStack;voidPush(LinkStack&s,intx){StackNode*p=newStackNode;p->data=x;p->next=s.top;s.top=p;}intPop(LinkStack&s,int&x){StackNode*p;if(s.top!=NULL){p=s.top;x=p->data;s.top=p->next;deletep;return1;}el
4、sereturn0;}voidShowStack(LinkStacks){StackNode*p=s.top;if(p==NULL)printf("tt栈为空。");else{printf("tt栈元素为:");while(p!=NULL){printf("%6d",p->data);p=p->next;}printf("");}}voidConversion(intn){LinkStacks;intx;s.top=NULL;do{x=n%2;n=n/2;Push(s,x);}while(n);p
5、rintf("tt转换后的二进制数为:");while(Pop(s,x))printf("%d",x);printf("");}voidSuffix(){charstr[STACKMAX];charstack[STACKMAX];charexp[STACKMAX];charch;intsum,i,j,t,top=0;printf("tt输入算术表达式(运算符只能包括+,-,*,/),以#结束:tt");fflush(stdin);i=0;do{i++;scanf("%c",&str[i])
6、;}while(str[i]!='#'&&i!=STACKMAX);sum=i;t=1;i=1;ch=str[i];i++;while(ch!='#'){switch(ch){case'(':top++;stack[top]=ch;break;case')':while(stack[top]!='('){exp[t++]=stack[top--];exp[t++]=',';}top--;break;case'+':case'-':while(top!=0&&stack[top]!='('){exp[t++]=stac
7、k[top--];exp[t++]=',';}case'*':case'/':while(stack[top]=='*'
8、
9、stack[top]=='/'){exp[t++]=stack[top--];exp[t++]=',';}stack[++top]=ch;break;case'':break;default:while(ch>='0'&&ch<='z'){exp[t++]=ch;ch=str[i++];}i--;exp[t++]=',';}ch=str[i++];}while(top!=0){exp[t++]=
10、stack[top--];if(top!=0)exp[t++]=',';}printf("tt输入的中缀表达式:");for(j=1;j