ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:145.50KB ,
资源ID:10696569      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10696569.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计回文数问题.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计回文数问题.doc

1、湖南科技学院课程设计报告课程名称: 数据结构课程设计课程设计题目: 02、回文问题系:专 业:年级、班:姓 名:学 号:指导教师:职 称:2011 年 12 月目录1. 问题描述-32. 具体要求-33. 测试数据-34. 算法思想-35. 模块划分-46. 数据结构-47. 源程序-78. 测试情况-149. 设计总结-1410. 参考文献-15一、 问题描述利用栈跟队列找出一个 TXT 文档中所有的回文单词并输出。回文单词就是单词中字母从前往后拼与从后往前拼得出的单词是一样的,如:AaA、121、1221、d、did 等,从数据结构角度看,栈和队列是特殊的线性表,其特殊性在于栈和队列的基本

2、操作是线性表操作的子集,它们是操作受限的线性表,而栈是一种限定仅在表尾进行插入或删除的线性表,栈的修改是按先进后出的顺序进行的,队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端进行删除,因此可利用栈和队列的这两个性质对一个单词是否为回文单词进行检测,如果是则输出这个单词即可。一句话里可能既包含字母、数字还可能包含标点符号,回文单词的判断是不包含标点符号的 ,但文件输入流读取的时候标点也被一起读取进来了,因此要删除紧跟单词后中的标点符号,单独对各个单词进行判断。二、具体要求此课程设计要求编写程序以实现检测出文档中的回文单词并将其输出的功能,首先要将每一个单词从文档读取出来,其次

3、对每一个单词进行回文判断,主程序用栈和队列实现,以进一步巩固、理解和熟练掌握栈和队列的基本操作;同时对文本文件进行读取数据要利用到文件输入流的知识。三、测试数据用文本文档 data.txt,进行测试,输出回文数,及个数。文本文档中除英文字母,数字,常见标点符号外无其他字符,并且编码采用常见的 ANSI 编码。四、算法思路1、初始化栈和队列,读入 TXT 文本文档,若文档不能正常读入,则输出文档读入错误,若正常读入,文档非空则将文档中的单词逐个读入到字符串中。2、因为标点符号都是紧跟单词后的,故对每个字符串首先得判断最后一个字符 c,若 c 既不是字母也不是数字,字符串的长度减一,即以标点符号结

4、束的字符串最后一个字符不压入栈跟队列,不参与回文单词的判断。3、调用出栈与出队列函数,逐个比较出栈与出队列字符是否一样,用count 记录栈中出来的与队列出来的相同字符的个数,若 count=str .length()则说明该字符串从栈中出来跟从队列出来完全一样,即字符串完全对称,为回文单词,输出,回文单词加一个,否则什么也不做。4、读取至文本文档最后时,程序结束,关闭文本文档,同时销毁队列。5、假设文本文档中除英文字母,数字,常见标点符号外无其他字符,并且编码采用常见的 ANSI 编码。五、模块划分函数功能:void initStack(SqStack/构造一个空栈 svoid clearS

5、tack(SqStack/清空栈bool isEmpty(SqStack/判断栈是否为空bool isFull(SqStack/判断栈是否满void push(SqStack/插入元素 e 为 s 的新的栈顶元素(进栈)char pop(SqStack/若栈不空,则删除 s 的栈顶元素(出栈)void initQueue(LinkQueue/构造一个空队列 qbool isEmpty(LinkQueue q);/判断队列是否为空void destroyQueue(LinkQueue/销毁队列void insertElem(LinkQueue/ 插入元素 e 为 q 的新的队尾元素(进队列)ch

6、ar deleteElem(LinkQueue/若队列不空,则删除 q 的对头元素(出队列)六、数据结构定义栈:struct SqStack /定义栈char baseMAXSIZE;int top;定义队列:struct QNode /定义队列结点char data;QNode* next;struct LinkQueue/ 定义队列QNode* front;QNode* rear;图示:栈图示:队列,插入元素抽象数据类型栈定义如下ADT stack数据对象:D= | i=1,2,n,n 0ai,ElenSt数据关系:R1=| , D,i=2,n;1i1ia约定 端为栈顶, 端为栈底n基本操

7、作:InitStack(isFull(push(1i1ia约定 端为队列尾, 端为队列头na1a基本操作:initQueue(struct SqStack /定义栈char baseMAXSIZE;int top;void initStack(SqStack/构造一个空栈 svoid clearStack(SqStack/清空栈bool isEmpty(SqStack/判断栈是否为空bool isFull(SqStack/判断栈是否满void push(SqStack/插入元素 e 为 s 的新的栈顶元素(进栈)char pop(SqStack/若栈不空,则删除 s 的栈顶元素(出栈)#end

8、if / SQSTACK_H_INCLUDEDSqStack.h#include#include#include#include“SqStack.h“using namespace std;void initStack(SqStackvoid clearStack(SqStackbool isEmpty(SqStackbool isFull(SqStackvoid push(SqStackvoid initQueue(LinkQueueif (!q.front)exit(1);q.front-next=NULL;void destroyQueue(LinkQueuedelete q.front

9、;q.front=q.rear;void insertElem(LinkQueuep-data=e;p-next=NULL;q.rear-next=p;q.rear=p;char deleteElem(LinkQueuechar e=p-data;q.front-next=p-next;if (q.rear=p) /若队列中只剩一个元素q.rear=q.front;/删除最后一个元素,链队为空,则需同时使队尾指针指向头结点delete p;return e;bool isEmpty(LinkQueue q)return q.front=q.rear;main.cpp#include#inclu

10、de#include#include#include“SqStack.h“#include“LinkQueue.h“using namespace std;int main()string str;int i,sum=0;LinkQueue q;SqStack s;initStack(s);if(isEmpty(s)coutstr;i=str.length();char c=stri-1;if (c=a|c=A|c=Z);elsei-;for (int j=0; ji; j+)push(s,strj);insertElem(q,strj);for (int k=0; ki; k+)if (po

11、p(s)=deleteElem(q)count+;if (count=i ni; n+)coutstrn;cout“ “;sum+;infile.close();coutendl;cout“此文本文档中共有回文单词:“sum“个“ endl;cout“*“endl;clearStack(s);if(isEmpty(s)cout“栈销毁成功!“endl;destroyQueue(q);if(isEmpty(q);cout“队列销毁成功!“endl;return 0;八、测试情况测试结果分析对于语句中的一般回文单词能正常输出,句末跟标点符号连在一起的回文单词也能通过程序把字符串末尾的标点给去掉并正

12、常输出,而字符串中的连接符可以作为回文单词的组成部分一起输出。九、设计总结本次课程设计我本来打算做第一个的,后来还是不得不做第二个,但最后我还是将第一个和第二个一起做了,我觉得回文数检查太简单,所以也没有花多大功夫去做,只是利用了栈和队列的性质,将字符压入栈与队列中,然后压出,判断是否相等,相等就输出。设计时本来想弄复杂点的,最后还是觉得没必要,既然简单的几行代码就能实现,何必去画蛇添足呢?简单就行,于是简单的编了出来。利用压栈和出栈判断有一个缺点,就是如果单词开头存在“”或者 时,无法进行判断,这样导致计算出来的结果不够准确。在顺利的完成了设计,我明白了在编写程序的时候,应该尽量使界面简洁大方,布局统一。变量类型的定义,程序可以设计的很简单,够用就好,这样程序就可以尽可能的减少对系统资源的占用。当然这样在设计时也免不了存在着一些不足。十、参考文献1. 谭浩强 C+程序设计 清华出版社 2. 严蔚敏, 吴伟民. 数据结构. 清华大学出版社, 2007.4

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报