数据结构实3栈和队列.doc

数据结构实3栈和队列.doc

ID:55530083

大小:34.00 KB

页数:8页

时间:2020-05-16

数据结构实3栈和队列.doc_第1页
数据结构实3栈和队列.doc_第2页
数据结构实3栈和队列.doc_第3页
数据结构实3栈和队列.doc_第4页
数据结构实3栈和队列.doc_第5页
资源描述:

《数据结构实3栈和队列.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《数据结构》实验(三)实验目的:1、掌握栈的顺序存储结构的特点及算法描述。2、掌握顺序栈的基本操作实现,熟悉应用方法。3、掌握队列顺序存储结构的特点及算法描述4、掌握顺序队列基本操作的实现,熟悉应用的方法。实验课时:4课时实验内容1、在键盘上接收一串带括号的字符串,判断括号是否匹配,如果匹配,输出正确,如果不匹配,输出第一对不匹配的括号,并显示错误。例如:{p{p})输出{and}{and)errorerror具体程序如下,请同学们仔细阅读,并在提示下,在有下划线的地方填上程序,#include"datastru.h

2、"#include"stdio.h"voidinitstack(SEQSTACK*s)/*顺序栈初始化*/{s->top=0;}DATATYPE1sempty(SEQSTACK*s)/*判栈空*/{if(s->top==0)return1;elsereturn0;}intpush(SEQSTACK*s,DATATYPE1x)/*元素x入栈*/{if(s->top==MAXSIZE-1){printf("栈满");return0;}else{s->top++;(s->data)[s->top]=x;return1;

3、}}DATATYPE1pop(SEQSTACK*s)/*返回栈顶元素并删除栈顶元素*/{DATATYPE1x;if(s->top==0){x=0;}else{x=(s->data)[s->top];s->top--;}returnx;}DATATYPE1gettop(SEQSTACK*s)/*返回栈顶元素*/{DATATYPE1x;if(s->top==0){printf("栈空");x=0;}elsex=(s->data)[s->top];returnx;}voidcheck(SEQSTACK*s){charc

4、h,dh;printf("请输入一串括号,回车键结束:");ch=getchar();while(ch!=''){if(ch=='('

5、

6、ch=='['

7、

8、ch=='{')//如果遇到左括号{push(s,ch);//把左括号入栈}if(ch==')'

9、

10、ch==']'

11、

12、ch=='}')//如果遇到右括号{//出栈,并把出栈的值赋给变量dhif(sempty(s))//如果栈为空{printf("缺失左括号!");break;//跳出循环}dh=pop(s);printf("%c和%c",dh,ch);

13、if(ch=='('&&dh!=")"

14、

15、ch=='['&&dh!="]"

16、

17、ch=='{'&&dh!="}")//如果dh和ch不匹配{printf("括号匹配错误");break;//跳出循环}}ch=getchar();}/*继续处理*/if(ch==''&&sempty(s))//如果字符串结束并且栈为空printf("括号配对正确");if(sempty(s)==0)//如果栈不为空printf("缺失右括号");}main(){SEQSTACKst,*s;s=&st;inits

18、tack(s);check(s);}2、添加一个函数dTOb(),利用栈的原理实现十进制转换成二进制。#defineDATATYPE1int#include"math.h"#include"stdio.h"#defineMAXSIZE100typedefstruct{DATATYPE1data[MAXSIZE];inttop;}SEQSTACK;voidinitstack(SEQSTACK*s)/*初始化空栈*/{s->top=0;}intempty(SEQSTACK*s)/*判栈空*/{if(s->top==0)r

19、eturn1;elsereturn0;}intpush(SEQSTACK*s,DATATYPE1x)/*进栈*/{if(s->top==MAXSIZE-1){printf("Overflow");return0;}else{s->top++;s->data[s->top]=x;return1;}}DATATYPE1pop(SEQSTACK*s)/*出栈*/{DATATYPE1x;if(empty(s)){printf("Underflow");x=NULL;}else{x=(s->data)[s->top];

20、s->top--;}returnx;}intstacklen(SEQSTACK*s)/*计算栈中元素个数*/{return(s->top);}voidoutput_stack(SEQSTACK*s)/*输出栈中元素*/{inti;printf("buttom:");for(i=1;i<=s->top;i++)printf("%d:",s->da

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。