《数据结构》-第三章 栈与队列_第1页
《数据结构》-第三章 栈与队列_第2页
《数据结构》-第三章 栈与队列_第3页
《数据结构》-第三章 栈与队列_第4页
《数据结构》-第三章 栈与队列_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章栈与队列315TYPEDEFSTRUCTELEMTYPEBASE2ELEMTYPETOP2BDSTACKTYPE/双向栈类型STATUSINIT_STACKBDSTACKTYPETWSBASE1TWSBASE0MTWSTOP0TWSBASE0TWSTOP1TWSBASE1RETURNOK/INIT_STACKSTATUSPUSHBDSTACKTYPE/注意此时的栈满条件IFI0TWSTOP0XELSEIFI1TWSTOP1XELSERETURNERRORRETURNOK/PUSHSTATUSPOPBDSTACKTYPEXTWSTOP0ELSEIFI1IFTWSTOP1TWSBASE1RETURNOVERFLOWXTWSTOP1ELSERETURNERRORRETURNOK/POP316VOIDTRAIN_ARRANGECHARTRAIN/这里用字符串TRAIN表示火车,H表示硬席,S表示软席PTRAINQTRAININITSTACKSWHILEPIFPHPUSHS,P/把H存入栈中ELSEQP/把S调到前部PWHILESTACKEMPTYSPOPS,CQC/把H接在后部/TRAIN_ARRANGE317INTISREVERSE/判断输入的字符串中WHILEEGETCHARWHILEEGETCHARIFSTACKEMPTYSRETURN0POPS,CIFECRETURN0IFSTACKEMPTYSRETURN0RETURN1/ISREVERSE318STATUSBRACKET_TESTCHARSTR/判别表达式中小括号是否匹配COUNT0FORPSTRPPIFPCOUNTELSEIFPCOUNTIFCOUNT1IFGX1YOLDGX1YCOLORENQUEUEQ,X1,Y/修改左邻点的颜色IFY1IFGXY1OLDGXY1COLORENQUEUEQ,X,Y1/修改上邻点的颜色IFX0S0ELSEIFM0ELSERETURNERRORRETURNOK/G325STATUSF_RECURSIVEINTN,INTRETURNP/SQRT_NONRECURSIVE327这一题的所有算法以及栈的变化过程请参见数据结构PASCAL版,作者不再详细写出328VOIDINITCIQUEUECIQUEUEQNEXTQ/INITCIQUEUEVOIDENCIQUEUECIQUEUEPDATAXPNEXTQNEXT/直接把P加在Q的后面QNEXTPQP/修改尾指针STATUSDECIQUEUECIQUEUE/队列已空PQNEXTNEXTXPDATAQNEXTNEXTPNEXTFREEPRETURNOK/DECIQUEUE329STATUSENCYQUEUECYQUEUEQBASEQREARXQREARQREAR1MAXSIZEIFQFRONTQREARQTAG1/队列满/ENCYQUEUESTATUSDECYQUEUECYQUEUEQFRONTQFRONT1MAXSIZEXQBASEQFRONTIFQFRONTQREARQTAG1/队列空RETURNOK/DECYQUEUE分析当循环队列容量较小而队列中每个元素占的空间较多时,此种表示方法可以节约较多的存储空间,较有价值330STATUSENCYQUEUECYQUEUEQREARQREAR1MAXSIZEQBASEQREARXQLENGTHRETURNOK/ENCYQUEUESTATUSDECYQUEUECYQUEUEHEADQREARQLENGTH1MAXSIZE/详见书后注释XQBASEHEADQLENGTH/DECYQUEUE331INTPALINDROME_TEST/判别输入的字符串是否回文序列,是则返回1,否则返回0INITSTACKSINITQUEUEQWHILECGETCHARPUSHS,CENQUEUEQ,C/同时使用栈和队列两种结构WHILESTACKEMPTYSPOPS,ADEQUEUEQ,BIFABRETURNERRORRETURNOK/PALINDROME_TEST332VOIDGETFIB_CYQUEUEINTK,INTN/求K阶斐波那契序列的前N1项INITCYQUEUEQ/其MAXSIZE设置为KFORI0IAVR/根据X的值决定插入在队头还是队尾QBASEQREARXQREARQREAR1MAXSIZE/插入在队尾ELSEQFRONTQFRONT1MAXSIZEQBASEQFRONTX/插入在队头RETURNOK/ENDQUEUESTATUSDEDQUEUEDQUEUE/队列空XQBASEQFRONTQFRONTQFRONT1MAXSIZERETURNOK/DEDQUEUE334VOIDTRAIN_REARRANGECHARTRAIN/这里用字符串TRAIN表示火车,P表示硬座,H表示硬卧,S表示软卧,最终按PSH的顺序排列RTRAININITDQUEUEQWHILERIFRPPRINTF“E“PRINTF“D“/实际上等于不入队列,直接输出P车厢ELSEIFRSPRINTF“E“ENDQUEUEQ,R,0/0表示把S车厢从头端入队列ELSEPRINTF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论