数据结构实验二网络134康阳11.docxVIP

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

实验二 栈和队列的基本操作及其应用 一、实验目的 1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。 2、掌握栈和队列的特点,即后进先出和先进先出的原则。 3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。 二、实验内容 本次实验提供4个题目,每个题目都标有难度系数,*越多难度越大,学生可以根据自己的情况选做,其中题目一是必做题,其它选作! 题目一:回文判断(*) [问题描述] 对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。 [基本要求] (1)数据从键盘读入; (2)输出要判断的字符串; (3)利用栈和队列对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。 回文 栈的输出与队列的输出相同;也就是每一个输出的字符都是相同的。若有一个不同,就不是回文。在一个循环中判断。有一个不同就跳出循环,不是回文。循环结束,是回文。 [测试数据] 由学生任意指定。 算法设计 利用栈和队列对给定的字符串判断其是否是回文。是回文则栈和队列的输出结果相同。由于栈是后进先出,队列是先进先出,所以栈和队列输出的完全相同,则给定的字符串是回文。所以可以将给定的字符串先进栈,再进队,然后一个一个字符比较输出,有一个字符不相同就不是回文。 本程序包含模块 1)主函数 int main() { 分别对栈和队列进行初始化; While循环分别将字符串进栈和进队;循环里有一个整形变量,整型变量作为循环的判断条件,字符变量作为数据存入栈和队列; For循环比较输出,判断是否是回文; } 2)栈和队列的存储结构 typedef struct Stacknode //构造栈 { char Zdata; struct Stacknode *Znext; }StackNode; typedef struct QueueNode //构造队列 { char Qdata; struct QueueNode *Qnext; }QueueNode; typedef struct //指向队列 { QueueNode *front, *rear; }LinkQueue; typedef struct //指向栈的指针 { StackNode *top; }LinkStack; 3)进栈和出栈函数 void Push(LinkStack s, char x) //进栈操作 int Pop(LinkStack s, char a) //出栈操作 需判断栈是否为空 4)进队和出队函数 void InQueue(LinkQueue *q) //进队操作 int OutQueue(LinkQueue *q, char b) //出队操作 需判断队是否为空 调试分析 在进行栈和队列的构造以进栈出栈和进队出队操作时,出栈和出队会遇到指针的指向问题。 再主函数中while循环往栈和队列输入数据,遇到了判断条件的决定问题。不知如何用字符当做判断条件,最终做出以整型做出修改作为判断条件,但是需要多次输入。然后在if语句中进行字符的输入和进栈进队。 在回文判断的核心处,初始想法是比较输出的字符,但是输出总是出现问题,最后做出的修改是定义一个计数器,比较出栈和出队函数执行结果,若为真则计数器加一。若为假则直接跳出循环,输出不是回文的结果。最后比较计数器和字符数量,若相等则是回文。 算法仍有欠缺,在判断条件和回文判断处应有更合理的修改 实验结果 进入操作页 进栈和进队操作,进栈数与进队数相等进栈为abcba,进队相同 最后分别是栈和队的输出。aabbccbbaa由此可判断栈和队的输出相等,是回文 进栈和进队操作,进栈数与进队数相等进栈为abcb,进队相同 最后分别是栈和队的输出。ba,且栈和队都只输出一次,证明第一个字符就不想等,由此可判断栈和队的输出不相等,不是回文 题目三:舞伴问题(**) 假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一算法模拟上述舞伴配对问题。 【实验提示】 先入队的男士或女士亦先出队配成舞伴。因此该问题具体有典型的先进先出特性,可用队列作为算法的数据结构。在算法中,假设男士和女士的记录存放在一个数组中作为输入,然后依次扫描该数组的各元素,并根据性别来决定是进入男队还是女队。当这两个队列构造完成之后,依次将两队当前的队头元素出队来配成舞伴,直至某队列变空为止。此时,若某队仍

文档评论(0)

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

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

1亿VIP精品文档

相关文档