數据结构实验3栈和队列.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
數据结构实验3栈和队列

《数据结构》实验(三) 实验目的: 掌握栈的顺序存储结构的特点及算法描述。 掌握顺序栈的基本操作实现,熟悉应用方法。 掌握队列顺序存储结构的特点及算法描述 掌握顺序队列基本操作的实现,熟悉应用的方法。 实验课时:4课时 实验内容 1、 在键盘上接收一串带括号的字符串 ,判断括号是否匹配,如果匹配,输出正确,如果不匹配,输出第一对不匹配的括号,并显示错误。例如: {p{p}) 输出 { and } { and ) error error 具体程序如下,请同学们仔细阅读,并在提示下,在有下划线的地方填上程序, #include datastru.h #include stdio.h void initstack(SEQSTACK *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 == 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); //把左括号入栈 } if(ch==)||ch==]||ch==}) //如果遇到右括号 { //出栈,并把出栈的值赋给变量dh if(sempty(s)) //如果栈为空 { printf(缺失左括号!); break; //跳出循环 } dh=pop(s); printf(%c和%c\n,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) //如果栈不为空 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 100 typedef struct { DATATYPE1 data[MAXSIZE]; int top; }SEQSTACK; void initstack(SEQSTACK *s) /*初始化空栈*/ { s-top = 0; } in

文档评论(0)

fv45ffsjjI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档