- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1. 简述下列算法的功能: status algo(Stack S) { int i,n,A[255]; n=0; while(!StackEmpty(S)) {n++;Pop(S,A[n]);} for(i=1;i=n;i++) Push(S,A[i]); } 2.假设一个算术表达式中可以包含三种括号:圆括号“)”和“(”、方括号“[”和“]”和花括号“{”和“}”,而且这三种括号可以按任意的次序嵌套使用(如:…[…{…}…[…]…]…[…]…(…)…。编写判别给定表达式中所包含是否正确配对出现的算法(已知表达式已存入数据元素为字符的顺序表中)。 Status AllBrackets_Test(char *str) { //判别表达式中三种括号是否匹配?InitStack(S);??for(p=str;*p;p++)??{????if(*p==(||*p==[||*p=={) push(S,*p);????else if(*p==)||*p==]||*p==})????{??????if(StackEmpty(S)) return ERROR;??????pop(S,c);??????if(*p==)c!=() return ERROR;??????if(*p==]c!=[) return ERROR;??????if(*p==}c!={) return ERROR; //必须与当前栈顶括号匹配????}//end? else if ?}//end for??if(!StackEmpty(s)) return ERROR;??return OK;}//AllBrackets_Test 3.如果希望循环队列中的元素都能得到利用,则需要设置一个标志域tag,并以tag的值为0或1来区分尾指针和头指针值相同时的队列状态是“空”还是“满”。试编写与此结构相应的入队列和出队列的算法,并从时间和空间角度讨论和不设标志这两种方法的使用范围(如当循环队列容量较小而队列中每个元素占的空间较多时,哪一种方法较好)。 (提示:将标志的初值置“0”。一旦元素入队列使得rear=front时,需要置tag为“1”:反之,一旦元素出队列使得rear=front时,需要置tag为“0”,以便使得下一次进入队列或出队列操作时,此时front=rear,根据tag的值来判断队列的状态。) Status EnCyQueue(CyQueue Q,int x) { //带tag域的循环队列入队算法?if(Q.tag==1) //tag域的值为0表示空,1表示满???return ERROR;??Q.base[Q.rear]=x;??Q.rear=(Q.rear+1)%MAXSIZE;??if(Q.front==Q.rear) Q.tag=1; //队列满}//EnCyQueue Status DeCyQueue(CyQueue Q,int x) { //带tag域的循环队列出队算法?if(Q.tag==0) //队列空 return ERROR; x=Q.base[Q.front]; Q.front=(Q.front+1)%MAXSIZE;?if(Q.front==Q.rear) Q.tag=0; //队列空?return OK;}//DeCyQueue 4.假设称正读和反读都相同的字符序列为“回文”,例如,’abba’和’abcba’回文,’abcde’和’ababab’不是回文。试写一个算法判别读入的一个以’@’为结束符的字符序列是否是“回文”。 int Palindrome_Test() //判别输入的字符串是否回文序列,是则返回1,否则返回0{…………..} Status Palindrome_Test() //检查是否回文 { InitStack(S);InitQueue(Q); while((c=getchar()!=@){ ????Push(S,c);EnQueue(Q,c); //同时使用栈和队列两种结构 ??} ??while(!StackEmpty(S)) ??{?Pop(S,a);DeQueue(Q,b)); ????if(a!=b) return ERROR;??} ??return OK; } 5. 假设如题1所述火车调度站的入口处有n节硬席或软席车厢(分别以H和S表示)等待调度,试编写算法,输出对这n节车厢进行调度的操作(即入栈或出栈操作)序列,以使所有的软席车厢都被调到硬席车厢之前。 提示:void Train_arrange(cha
您可能关注的文档
最近下载
- 三笔字实用教程(汉字书写技能训练)全套教学课件.pptx
- 兵棋推演中的智能决策技术:基于大语言模型的探索与应用.docx VIP
- 3DMine-矿业工程软件-帮助手册说明书.pdf VIP
- 2025年大连星海会展旅游集团有限公司人员招聘笔试备考题库.docx VIP
- 120万吨复合肥项目可行性研究报告.doc VIP
- 初中数学二轮复习 专题1.9 最值问题-利用垂线段、旋转求最值 课件.pptx VIP
- 芳烃部工艺简介.pdf VIP
- 4.2《扬州慢(淮左名都)》课件课件(共46张PPT)统编版高中语文选择性必修下册(含音频+视频).pptx VIP
- CB_T 3253-2013 船用柴油机技术条件.pdf VIP
- 课程与教学论全套教学课件.pptx
原创力文档


文档评论(0)