- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 数学必修一1.1.3-2集合运算课件.ppt
- 数学模型的建立过程.doc
- 数字逻辑电路 2逻辑函数及其简化.ppt
- 数学:1.1.3《集合的基本运算(全集与补集)》课件(新人教A版必修1).ppt
- 数学:1.1.3《集合的基本运算(第2课时)》课件(新人教A版必修1).ppt
- 数学:1.1.3 集合的基本运算 第1课时课件(新人教A版必修1).ppt
- 数学:1.1.3《集合的基本运算(二)》课件(新人教A版必修1).ppt
- 数学:1.1.3《集合的基本运算》课件(新人教A版必修1).ppt
- 数学:1.1.3《集合的基本运算》测试(新人教A版必修1).doc
- 数学:1.2.1《常数函数与幂函数的导数》.ppt
- 2024年01月山西省岚县人民法院2024年招考3名司法辅助人员笔试历年典型考题及考点剖析附答案详解.docx
- 2024年01月宁夏银川市贺兰县人民医院岗位招考聘用11人笔试历年典型考题及考点剖析附答案详解.docx
- 2024年01月山东烟台莱山区结合事业单位招考聘用征集本科及以上学历毕业生入伍18人笔试历年典型考题及考点剖析附答案详解.docx
- 2024年01月广西玉林陆川县公开招聘重点领域急需紧缺(高层次)人才60人笔试历年典型考题及考点剖析附答案详解.docx
- 2024年01月广东中山市南头镇人民政府招考聘用合同制工作人员3人笔试历年典型考题及考点剖析附答案详解.docx
- 2024年01月政协富宁县委员会委员联络服务中心(云南省)2024年考察调(流)动3名工作人员笔试历年典型考题及考点剖析附答案详解.docx
- 2024年01月广州市海珠区琶洲数字经济创新发展服务中心2024年公开选调1名事业编制工作人员笔试历年典型考题及考点剖析附答案详解.docx
- 2024年01月宁波市鄞州区市场监管局2024年招考3名编外人员笔试历年典型考题及考点剖析附答案详解.docx
- 2024年01月山东省淄博市文昌湖省级旅游度假区事业单位2024年度面向喀什籍高校毕业生综合类(定向)岗位公开招考工作人员笔试历年典型考题及考点剖析附答案详解.docx
- 2024年01月山东聊城东阿县教育类事业单位引进优秀青年人才3人笔试历年典型考题及考点剖析附答案详解.docx
文档评论(0)