数据结构实验3栈和队列.doc
《数据结构实验3栈和队列.doc》由会员分享,可在线阅读,更多相关《数据结构实验3栈和队列.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构实验(三)实验目的:1、 掌握栈的顺序存储结构的特点及算法描述。2、 掌握顺序栈的基本操作实现,熟悉应用方法。3、 掌握队列顺序存储结构的特点及算法描述4、 掌握顺序队列基本操作的实现,熟悉应用的方法。实验课时:4课时实验内容1、 在键盘上接收一串带括号的字符串 ,判断括号是否匹配,如果匹配,输出正确,如果不匹配,输出第一对不匹配的括号,并显示错误。例如:pp)输出 and and )errorerror具体程序如下,请同学们仔细阅读,并在提示下,在有下划线的地方填上程序,#include datastru.h#include stdio.hvoid initstack(SEQSTAC
2、K *s)/*顺序栈初始化*/ s-top = 0; DATATYPE1 sempty(SEQSTACK *s) /*判栈空*/if(s-top= 0)return 1;else return 0; int push(SEQSTACK *s, DATATYPE1 x)/*元素x入栈*/ if(s-top = MAXSIZE - 1) printf(栈满n); return 0; else s-top+; (s-data)s-top = x; return 1; DATATYPE1 pop(SEQSTACK *s) /*返回栈顶元素并删除栈顶元素*/DATATYPE1 x; if(s-top =
3、 0) x = 0; else x = (s-data)s-top; s-top-; return x; DATATYPE1 gettop(SEQSTACK *s)/*返回栈顶元素*/ DATATYPE1 x; if(s-top = 0) printf(栈空n); x = 0; else x = (s-data)s-top; return x; void check(SEQSTACK *s)char ch,dh;printf(n请输入一串括号,回车键结束 :);ch = getchar();while(ch != n) if(ch=(|ch=|ch=) /如果遇到左括号 push(s,ch);
4、 /把左括号入栈 if(ch=)|ch=|ch=) /如果遇到右括号 /出栈,并把出栈的值赋给变量dh if(sempty(s) /如果栈为空 printf(缺失左括号!);break; /跳出循环 dh=pop(s); printf(%c和%cn,dh,ch); if(ch=(&dh!=)|ch=&dh!=|ch=&dh!=)/如果dh和ch不匹配 printf(n括号匹配错误n); break; /跳出循环 ch = getchar(); /*继续处理*/ if(ch=n & sempty(s) /如果字符串结束并且栈为空printf(n括号配对正确n); if(sempty(s)=0)
5、/如果栈不为空printf(n缺失右括号n);main() SEQSTACK st, *s; s = &st; initstack(s); check(s);2、添加一个函数dTOb(),利用栈的原理实现十进制转换成二进制。 #define DATATYPE1 int#include math.h#include stdio.h#define MAXSIZE 100typedef struct DATATYPE1 dataMAXSIZE; int top;SEQSTACK;void initstack(SEQSTACK *s) /*初始化空栈*/s-top = 0; int empty(SEQ
6、STACK *s) /*判栈空*/if(s-top = 0)return 1;else return 0; int push(SEQSTACK *s, DATATYPE1 x) /*进栈*/ if(s-top = MAXSIZE - 1) printf(Overflown); return 0;elses-top+; s-datas-top = x; return 1; DATATYPE1 pop(SEQSTACK *s) /*出栈*/DATATYPE1 x;if(empty(s)printf(Underflown); x = NULL;else x = (s-data)s-top; s-to
7、p-;return x;int stacklen(SEQSTACK *s) /*计算栈中元素个数*/return(s-top ); void output_stack(SEQSTACK *s) /*输出栈中元素*/int i;printf(buttom:);for(i=1;itop;i+) printf(%d:,s-datai);printf(topn);DATATYPE1 dTOb(DATATYPE1 x) int j,i,er=0;if(x!=0) for(i=1;x!=1;i+) j=x%2; x=x/2;er+=j*pow(10,(i-1); er+=1*pow(10,(i-1);re
8、turn er; main()SEQSTACK s;DATATYPE1 a;int com,i,m,k;initstack(&s); /*初始化空栈*/doprintf(n1:进栈 2: 出栈 3: 输出栈中元素 4: 栈中元素个数 5:十进制转二进制 0:退出n); printf(enter a number(0-4):); scanf(%d,&com); switch(com) case 1:printf( enter a element:); scanf(%d,&a); push(&s,a); output_stack(&s); break; case 2:a = pop(&s); pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 队列
限制150内