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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

淮海工学院数据结构第2次实验.docx

1、淮海工学院数据结构第2次实验淮海工学院计算机科学系实验报告书课程名: 数据结构 题 目: 线性数据结构实验 (栈与对立队列及其应用)班 级: 学 号: 2012122693 姓 名: 线性表算法实现与应用报告要求1目的与要求:1)掌握栈与队列的数据类型描述及特点;2)掌握栈的顺序和链式存储存表示与基本算法的实现;3)掌握队列的链式和循环存储表示与基本操作算法实现;4) 掌握栈与队列在实际问题中的应用和基本编程技巧;5)按照实验题目要求,独立完成实际程序的编写编写、调试和运行,并通过用例数的运行过程抓获相关屏面验证程序设计的正确性;7)由于国庆节占用授课时间,所以本次实验将不做统一上机安排,要求

2、同学们节日期间自行完成实验任务,并于第6周周4以前按时提交实验报告。2 实验内容或题目(一)必做题:1、实现顺序栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等),并给出栈的每次操作变化状态;2、实现链栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等),要求给出栈的操作变化过程;3、实现循环队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等),并实时给出队列的操作变化状态;4、实现链式队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等),并实时给出队列的操作变化状态;

3、(二)选做题(视自己能力而定,数量不限):任选一个或多个源程序(已经发给学委),并阅读、调试和运行程序,而后给出程序功能分析和实例运行演示;1、实现表达式求值算法程序;2、用递归算法实现汉诺塔问题算法程序;3、使用循环队列实现打印杨辉三角形算法程序。3 实验步骤与源程序 第一题:#include #include #define TRUE 1#define FALSE 0#define Size 50typedef struct int elemSize; int top; SeqStack;void InitStack(SeqStack *S) S-top =-1;int IsEmpty(S

4、eqStack *S) return(S-top=-1?TRUE:FALSE);/判断栈空 为空是真 反之为假int IsFull(SeqStack *S) return(S-top=Size-1?TRUE:FALSE);/判断栈满 为满是真 反之为假int Push(SeqStack *S,int x)/压栈 if(S-top=Size-1) return(FALSE); S-top+; S-elemS-top = x; return(TRUE);int Pop(SeqStack *S,int *x)/弹出 if(S-top = -1) return(FALSE); else *x = S-

5、elemS-top; S-top-; return(TRUE); void main() SeqStack S; int x,y,i,l; InitStack(&S); if(!IsFull(&S) printf(栈空:n); printf(输入要压入的元素个数(50以内):n); scanf(%d,&l); printf(输入要压入的元素:n); for(i=0;il;i+) scanf(%d,&y); Push(&S,y); printf(弹出:n); while(!IsEmpty(&S) Pop(&S,&x); printf(%dn,x); 第二题:#define TRUE 1#defi

6、ne FALSE 0#include #include typedef struct node int data; struct node *next;LinkStackNode;typedef LinkStackNode *LinkStack;int IsEmpty(LinkStack S) return NULL=S-next?TRUE:FALSE;int InitStack(LinkStack *S) *S=(node*)malloc(sizeof(node); if(NULL=*S) return FALSE; (*S)-next =NULL; return TRUE;int Push

7、(LinkStack S, int x) LinkStackNode *temp; temp=(LinkStackNode *)malloc(sizeof(LinkStackNode); if(temp=NULL) return(FALSE); temp-data=x; temp-next=S-next; S-next=temp; return(TRUE);int Pop(LinkStack S, int *x) LinkStackNode * temp; temp=S-next; if(temp=NULL) return(FALSE); S-next=temp-next; *x=temp-d

8、ata; free(temp); return(TRUE);void main() LinkStackNode *s; InitStack(&s); int x,i,l; if(IsEmpty(s) printf(栈空 n); printf(请输入压入元素个数(50以内):n); scanf(%d,&l); printf(请输入压入元素:n); for(i=0;il;i+) scanf(%d,&x); Push(s,x); printf(弹出:n); while(!IsEmpty(s) Pop(s, &x); printf(%dn,x); 第三题:#include #include #defi

9、ne TRUE 1#define FALSE 0#define MAXSIZE 50 typedef struct int elementMAXSIZE; int front; int rear; SeqQueue;void InitQueue(SeqQueue *Q) Q-front=Q-rear=0;int EnterQueue(SeqQueue *Q, int x) if(Q-rear+1)%MAXSIZE=Q-front) return(FALSE); Q-elementQ-rear=x; Q-rear=(Q-rear+1)%MAXSIZE; return(TRUE); int Del

10、eteQueue(SeqQueue *Q, int *x) if(Q-front=Q-rear) return(FALSE); *x=Q-elementQ-front; Q-front=(Q-front+1)%MAXSIZE; return(TRUE); int IsEmpty(SeqQueue *Q) if(Q-front=Q-rear) return(TRUE); else return(FALSE); void main() SeqQueue s; InitQueue(&s); int x,i,l; if(IsEmpty (&s) printf(此时为空队列n); printf(请输入进

11、队元素个数n); scanf(%d,&l); printf(请输入元素n); for(i=0;il;i+) scanf(%d,&x); EnterQueue(&s,x); printf(出队:n); while(!IsEmpty(&s) DeleteQueue(&s,&x); printf(%dn,x); if(IsEmpty (&s) printf(此时为空队列n);第四题:#include #include #define TRUE 1#define FALSE 0typedef struct Node int data; struct Node *next;LinkQueueNode;t

12、ypedef struct LinkQueueNode *front ; LinkQueueNode *rear;LinkQueue;int IsEmpty(LinkQueue *Q) return Q-front =Q-rear?TRUE:FALSE;int InitQueue(LinkQueue *Q) Q-front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode); if(Q-front!=NULL) Q-rear=Q-front; Q-front-next=NULL; return (TRUE); else return(FALSE);int

13、 EnterQueue(LinkQueue *Q,int x) LinkQueueNode *NewNode; NewNode=(LinkQueueNode *)malloc(sizeof(LinkQueueNode); if(NewNode!=NULL) NewNode-data=x; NewNode-next=NULL; Q-rear-next=NewNode; Q-rear=NewNode; return (TRUE); else return(FALSE);int DeleteQueue(LinkQueue *Q,int *x) LinkQueueNode *p; if(Q-front

14、=Q-rear) return(FALSE); p=Q-front-next ; Q-front-next =p-next ; if(Q-rear=p) Q-rear=Q-front; *x=p-data; free(p); return (TRUE);void main() LinkQueue q; int x,i,l; InitQueue(&q); if(IsEmpty(&q) printf(此时为空队列n); printf(请输入进队元个数素n); scanf(%d,&l); printf(请输入元素:n); for(i=0;il;i+) scanf(%d,&x); EnterQueue

15、(&q,x); printf(出队:n); for(i=0;il;i+) DeleteQueue(&q,&x); printf(%dn,x); if(IsEmpty(&q) printf(此时为空队列n);4 测试数据与实验结果(可以抓图粘贴) 5 结果分析与实验体会 开始在编写第一题时,将所有代码完成后一直报错,反复检查代码没有错误,后来看到头文件名是#include 因为C+习惯导致错误,后来改为就正确了,而且这些题目都是很基础的题目,在之后的编程中也遇到很多问题,如在第一题输出用printf(%dn,&x);时,无报错,但输出是奇怪数值,绞尽脑汁都找不出问题所在,但是我注意到输出的数值都是一样的,猜测到可能是printf(%dn,&x);中&x是错误,改为printf(%dn,x);后正确,可是还是说不出具体的原因,这些都表明自己的基础差,还需要多巩固基础知识。 通过这次试验编程,对栈及队列加深理解,熟记了一些代码,了解自己不足之处,收获不少。

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

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