数据结构报告二.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构报告二

软 件 学 院 栈和队列的基本操作及其应用 课程名称: 数据结构 指导老师: 高老师 2015年5月 实验二 栈和队列的基本操作及其应用 一、实验目的 1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。 2、掌握栈和队列的特点,即后进先出和先进先出的原则。 3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序存储结构和链式存储结构上的实现。 二、实验内容和要求 [问题描述] 对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。 [基本要求] (1)数据从键盘读入; (2)输出要判断的字符串; (3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。 [测试数据] 由学生任意指定。 三、算法设计 1、主要思想: 由栈的后进先出的特点, 第一,先把字符串按顺序全部进栈, 第二,把进栈的字符串按顺序出栈, 第三,比较出栈的顺序与进栈的顺序是否一样,若一样为回文字符串, 相反,不是回文字符串。栈的示意图如图1所示: 出栈 进栈 栈顶 栈顶 Bn . . . . 栈底B2 栈底 B1 图1 栈的示意图 本程序包含五个模块: 主函数 int main(){ 1.创建一个栈 2.输入字符窜; 3.判断是否为回文字符串 } 初始化栈函数 Status initStack(SqStack s,int maxsize) 初始化构造一个空栈 进栈函数 Status push(SqStack s,SElemType e) 把字符串分别按顺序入栈 出栈函数 Status pop (SqStack s,SElemType e) 把字符串分别按顺序出栈 5)判断是否为回文数的函数 bool is_(char str[]) 把出栈的字符与输入的数据按顺序一位一位的比较 根据栈的“后进先出”的特点,回文字符串的判断的核心算法是把字符串依次进栈,把字符串出栈,就可以得到一串和原来字符串顺序相反的字符串。 算法思路是读一个字符串的时候都是先读一个个的字符,然后把每个已读字符放入栈中。这样字符串在栈中就是反的,然后把一个个的字符从栈中弹出,同时和原字符串的开头比较。如果任何位置的两个比较的字符串都相同,那么字符串就是回文,否则就不是。 3.元素类型、结点类型和指针类型 typedef struct { SElemType *base; SElemType *top; int stacksize; }SqStack; 4、主函数和其他函数清单 int main(){} Status initStack(SqStack s,int maxsize) 初始化一个空栈 Status push(SqStack s,SElemType e) 把数据依次放入栈中 Status pop (SqStack s,SElemType e) 把栈中的数据按顺序出栈 bool is_(char str[]) 根据出栈的字符串与进栈之前的字符串进行比较,判断是否是回文字符串 四、调试分析 我原来用Java中的字符窜的比较的方式,发现并不符合题意,后来采用栈的方式进行了操作。解出了此题。 对于栈明白出栈及进栈及其的重要,在栈的运算中栈顶和和栈底的区别也十分的重要。 在输入字符窜时,应输入正确的字符,不能输入一些特殊的字符,这样才能保证程序的正确的运行。 五、实验结果 运行效果如图所示: 图1 运行效果 图2 运行效果 六、总结 通过这次实验,我明白了栈是按照后进先出的原则存储数据,最先进入的数据被压入栈底,最后进入的数据在栈顶,需要读数据时从栈顶开始弹出数据。栈底固定,而栈顶浮动。栈中元素个数为零时称为空栈。插入一般称为进栈(p u s h ),删除则称为出栈(p o p )。 ?栈也被称为先进后出表,在函数调用的时候用于存储断点,在递归时也要用到栈。 对于回文的数,我们可以采用多种的方式进行操作,在做回文数时,我们采用栈的方式能更深层的理解。 七、重要程序 //定义一个空的栈结构体 typedef struct { SElemType *base; SElemType *top; int stacksize; }SqStack; //初始化一个栈 Status initStack(SqStack s,int maxs

您可能关注的文档

文档评论(0)

bm5044 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档