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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(栈和队列的基本操作及其应用数据结构实验报告书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

栈和队列的基本操作及其应用数据结构实验报告书.docx

1、栈和队列的基本操作及其应用数据结构实验报告书栈和队列的基本操作及其应用数据结构实验报告书数据结构实验报告 计科111 * 201100814* 数据结构 实验内容:栈和队列的基本操作及其应用 201100814* 计科111 * 第 1 页 数据结构实验报告 计科111 * 201100814* 前言 计算机编程中加工处理的对象是数据,而数据具有一定的组织结构,所以学习计算机编程仅仅了解计算机语言是不够的,还必须掌握数据的组织、存储和运算的一般方法,这便是数据结构课程中所研究的内容,也是我们编写计算机程序的重要基础,由于它对计算机学科起到承前启后的作用,因此本课程被列为计算机等相关专业最重要的

2、专业基础课;同时数据结构是计算机专业教学的一门核心课程。计算机各领域都要用到各种数据结构,而且要从事计算机科学与技术工作,尤其是计算机领域的软件开发工作,必须具备较强的数据结构基础。 数据结构课程内容丰富、学习量大,实践性强;隐含在各部分内容中的方法和技术多;算法设计具有动态性和抽象性等特点,看懂听明白与掌握会应用之间有相当大的一段距离。所以学生必须多实践才能进一步加深对课程的理解,理解和掌握算法设计所需的方法和技术,为整个专业学习打下良好的基础。 第 2 页 数据结构实验报告 计科111 * 201100814* 一、实验目的 1、帮助读者复习C+语言程序设计中的知识。 2、熟悉线性表的逻辑

3、结构。 3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。 二、实验内容 本次实验提供2个题目,每个题目都标有难度系数,*越多难度越大,学生可以根据自己的情况任选一个 本人由于初学,对数据结构的操作知识欠缺,所以选了2个实验题目中的第1个题目如下: 题目一:回文判断(*) 问题描述 对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。 基本要求 (1)数据从键盘读入; (2)输出要判断的字符串; (3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。 测试数据 由学生任

4、意指定。 三、算法设计 1、程序所需头文件已经预处理宏定义如下 #include #include #define OVERFLOW -1 第 3 页 数据结构实验报告 计科111 * 201100814* #define OK 1 #define ERROR 0 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef char SElemType; typedef int Status; typedef struct SElemType *base; SElemType *top; int stacksize; SqStac

5、k; typedef char QElemType; typedef struct QNode QElemType data; struct QNode *next; QNode,*QNodePtr; typedef struct QNodePtr front; QNodePtr rear; LinkQueue; 2、程序中所需的操作栈的POP和PUSH函数 Status Push(SqStack &S,SElemType e) /插入e为新的栈顶元素 if(S.top-S.base=S.stacksize) /栈满,追加存储空间 S.base=(SElemType*)realloc(S.ba

6、se,(S.stacksize+STACKINCREMENT)*sizeof(SElemType); if(!S.base)exit (OVERFLOW);/存储空间分配失败 S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; *S.top+=e; return OK; /Push函数 Status Pop(SqStack &S ,SElemType &e) /若栈不空,删除栈顶元素,并用e返回其值 if(S.top=S.base) return ERROR; 第 4 页 数据结构实验报告 计科111 * 201100814* e=*-

7、S.top; return OK; /Pop函数 3、程序中所需的操作队列的函数 Status EnQueue(LinkQueue &Q,QElemType e) QNodePtr p; p=(QNodePtr)malloc(sizeof(QNode); if(!p)exit(OVERFLOW); p-data=e;p-next=NULL; Q.rear-next=p; Q.rear=p; return OK; Status DeQueue(LinkQueue &Q,QElemType &e) QNodePtr p; if(Q.front=Q.rear) return ERROR; p=Q.f

8、ront-next; e=p-data; Q.front-next=p-next; if(Q.rear=p) Q.rear=Q.front; free(p); return OK; 4、另外,还有创建栈和创建一个空的链式栈 Status CreatStack(SqStack &S) S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType); if(!S.base)exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; /创建栈 Status Crea

9、tQueue(LinkQueue &Q) 第 5 页 数据结构实验报告 计科111 * 201100814* Q.front=Q.rear=(QNodePtr)malloc(sizeof(QNode); if(!Q.front)exit(OVERFLOW); Q.front-next=NULL; return OK; /建立一个空的链式栈 5、再就是最重要的判断部分 int Test() /判别输入的字符串是否回文序列,是则返回1,否则返回0 SqStack S;LinkQueue Q; CreatStack(S);CreatQueue(Q); char c; SElemType a,b; w

10、hile(c=getchar()!=) Push(S,c);EnQueue(Q,c); /同时使用栈和队列两种结构 while(S.top!=S.base) Pop(S,a);DeQueue(Q,b); if(a!=b) return ERROR; return OK; 判断输入的字符串是否回文序列,是则返回1,否则返回0 四、调试与测试 我们开始测试数据:12321,如图: 输出结果是YES,说明程序判断出12321是回文 然后我们测试12345,如图 第 6 页 数据结构实验报告 计科111 * 201100814* 输出结果是NO,所以程序判断12345不是回文 五、总结 通过做这次实验

11、,发现自己在数据结构这门课中还有很多不足有很多知识还没掌握,所以在写程序的时候出现了很多的错误,及还有很多的知识不以灵活运用,特别是对栈和队列的操作问题。 因为以前C语言没有掌握好,所以这次做本次实验还是有点吃力,刚开始完全没有思,后来经过查找资料,在自己的努力下和同学的帮助下,终于完了本次实验。 此次实验发现的自己的不足,我相信在以后的学习中,我会更加的努力。 六、源代码 #include #include #define OVERFLOW -1 #define OK 1 #define ERROR 0 #define STACK_INIT_SIZE 100 #define STACKINC

12、REMENT 10 typedef char SElemType; typedef int Status; typedef struct SElemType *base; SElemType *top; int stacksize; SqStack; typedef char QElemType; typedef struct QNode QElemType data; struct QNode *next; QNode,*QNodePtr; typedef struct 第 7 页 数据结构实验报告 计科111 * 201100814* QNodePtr front; QNodePtr re

13、ar; LinkQueue; Status CreatStack(SqStack &S) /创建栈 S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType); if(!S.base)exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; Status Push(SqStack &S,SElemType e) /插入e为新的栈顶元素 if(S.top-S.base=S.stacksize)/栈满,追加存储空间 S.base=(SElemType*)re

14、alloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType); if(!S.base)exit (OVERFLOW);/存储空间分配失败 S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; *S.top+=e; return OK; /Push Status Pop(SqStack &S ,SElemType &e) /若栈不空,删除栈顶元素,并用e返回其值 if(S.top=S.base) return ERROR; e=*-S.top; return OK; /Pop Sta

15、tus CreatQueue(LinkQueue &Q) /建立一个空的链式栈 Q.front=Q.rear=(QNodePtr)malloc(sizeof(QNode); if(!Q.front)exit(OVERFLOW); Q.front-next=NULL; return OK; 第 8 页 数据结构实验报告 计科111 * 201100814* Status EnQueue(LinkQueue &Q,QElemType e) QNodePtr p; p=(QNodePtr)malloc(sizeof(QNode); if(!p)exit(OVERFLOW); p-data=e;p-n

16、ext=NULL; Q.rear-next=p; Q.rear=p; return OK; Status DeQueue(LinkQueue &Q,QElemType &e) QNodePtr p; if(Q.front=Q.rear) return ERROR; p=Q.front-next; e=p-data; Q.front-next=p-next; if(Q.rear=p) Q.rear=Q.front; free(p); return OK; int Test()/判别输入的字符串是否回文序列,是则返回1,否则返回0 SqStack S;LinkQueue Q; CreatStack

17、(S);CreatQueue(Q); char c; SElemType a,b; while(c=getchar()!=) Push(S,c);EnQueue(Q,c); /同时使用栈和队列两种结构 while(S.top!=S.base) Pop(S,a);DeQueue(Q,b); if(a!=b) return ERROR; return OK; Status main() printf(请输入要判断的字符串n并请以作为结束符n); if(Test()=1) printf(YESn); 第 9 页 数据结构实验报告 计科111 * 201100814* else printf(NOn); return OK; 第 10 页

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1