欢迎来到天天文库
浏览记录
ID:55294573
大小:201.00 KB
页数:10页
时间:2020-05-09
《实验3:栈子系统.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、验证性实验3:栈子系统班级:H1001学号:09姓名:陆俊实验日期:2011.09.28~10.121.实验目的(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;structstacknode*next;}StackNode;typedefstruct{Stack
3、Node*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;}elsereturn0;}voidShowStack(LinkStacks){StackNode*p=s.top;if(p==NULL)printf("tt栈为空。");e
4、lse{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);printf("tt转换后的二进制数值为:");while(Pop(s,x))printf("%d",x);printf("");}voidSuffix(){charstr[STACKMAX];charstack[STACKMAX];ch
5、arexp[STACKMAX];charch;intsum,i,j,t,top=0;printf("tt输入算术表达式(运算符只能包含+,-,*,/),以#结束:tt");fflush(stdin);i=0;do{i++;scanf("%c",&str[i]);}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++
6、]=stack[top--];exp[t++]=',';}top--;break;case'+':case'-':while(top!=0&&stack[top]!='('){exp[t++]=stack[top--];exp[t++]=',';}stack[++top]=ch;break;case'*':case'/':while(stack[top]=='*'
7、
8、stack[top]=='/'){exp[t++]=stack[top--];exp[t++]=',';}stack[++top]=ch;break;case'':break;default:while(ch>='0'&&ch
9、<='z'){exp[t++]=ch;ch=str[i++];}i--;exp[t++]=',';}ch=str[i++];}while(top!=0){exp[t++]=stack[top--];if(top!=0)exp[t++]=',';}printf("tt输入的中缀表达式:");for(j=1;j
此文档下载收益归作者所有