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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

栈与队列的顺序表示和实现实验报告.docx

1、栈与队列的顺序表示和实现实验报告实验项目栈与队列的顺序表示和实现实验报告实验内容编写一个程序实现顺序栈和顺序队列的各种基本运算,并完成以下操作:1、初始化顺序队列;2、建立顺序队列;3、入队;4、出队;5、判断队列是否为空;6、取队头元素;7、遍历队列;8、初始化顺序栈;9、插入元素;10、删除栈顶元素;11、取栈顶元素;12、遍历顺序栈; 13、置空顺序栈;算法设计与程序实现:算法分析 1、对于顺序栈和顺序队列,都是采用一组地址连续的存储单元一次存放自栈底到栈顶或从队列头到队列尾的数据元素。 2、对于栈,设栈顶指针为top,栈底指针为base。用top=0或top=base表示栈空。对于队列

2、,设指针front为队列头指针,设指针rear表示队列尾指针。用front=rear=0表示空队列。 3、初始化栈和队列时,令top=0或front=rear=0,将栈或队列置空。 4、每入栈一个数据元素,指针top增加1,出栈时,指针top减小1。每当插入新的队尾数据元素时,指针rear增加1,每当删除一个队头数据元素时,指针front减小1。核心程序/顺序队列#include#include#include#define MAXNUM 100#define ElemType int #define TRUE 1#define FALSE 0 /定义队列的顺序存储结构typedef stru

3、ct ElemType queueMAXNUM; int front; int rear;sqqueue;/初始化顺序队列int initQueue(sqqueue *q) if(!q)return FALSE; q-front=-1; q-rear=-1; return TRUE;/入队int append(sqqueue *q,ElemType x) if(q-rear=MAXNUM-1)return FALSE q-rear+; q-queueq-rear=x; return TRUE; /出队ElemType Delete(sqqueue *q) ElemType x; if(q-fr

4、ont=q-rear) printf(队列空!n);return 0; x=q-queue+q-front; printf(队头元素%d出队!n,x); return x; /判断队列是否为空int Empty(sqqueue *q)if(q-front=q-rear)return TRUE;return FALSE; /获取队头元素int gethead(sqqueue *q) ElemType x;if(q-front=q-rear)printf(队列空!n);return 0; x=q-queueq-front+1;printf(n队头元素:%d出队n,x); return x; /遍历

5、队 void display(sqqueue *q) int s; s=q-front; if(q-front=q-rear) printf(队列为空!n); else printf(n顺序队列依次为:); while(srear) s=s+1; printf(%dqueues); printf(n); printf(顺序队列队尾元素所在位置为:rear=%dn,q-rear); printf(书序队列队头元素所在位置为:front=%dn,q-front); /建立顺序队列 void Setsqqueue(sqqueue *q) int n,i,m; printf(n请输入顺序队列的长度:)

6、; scanf(%d,&n); printf(n请依次输入顺序队列的元素值:n); for(i=0;in;i+) scanf(%d,&m); append(q,m); /主函数 void main() sqqueue *head; int x,select; head=(squeue*)malloc(sizeof(squeue); printf(n第一次使用必须初始化!n); do printf(n*主菜单*n); printf(n 1 初始化队列 n); printf(n 2 建立顺序队列 n); printf(n 3 入队 n); printf(n 4 出队 n); printf(n 5

7、判断队列是否为空 n); printf(n 6 取队头元素 n); printf(n 7 遍历队列 n); printf(n 0 退出程序 n); printf(n*n); printf(n请选择操作:n); scanf(%d,&select); switch(select) case 1: initQueue(head); printf(已经初始化队列!n); break; case 2: Setsqqueue(head) printf(n已经建立队列!n); dispaly(head); break; case 3: printf(请输入队的值:n); scanf(%d,&x); appe

8、nd(head,x); dispaly(head); break; case 4: Delete(head); diapaly(head); break; case 5: if(Empty(head) printf(队列空!n); else printf(队列非空!n); break; case 6: gethead(head); break; case 7: dispaly(head); break; case 0: exit(0); while(select=7); /顺序栈#include#include#define MAXNUM 100#define ElemType int /定义

9、栈的顺序存储结构typedef struct ElemType stackMAXNUM; int top;SqStack;/初始化顺序栈void InitStack(SqStack *p) if(!p) printf(内存分配失败!); p-top= -1;/入栈void Push(SqStack *p,ElemType x) if(p-toptop=p-top+1; p-stackp-top=x; else printf(Overflow!n);/出栈ElemType Pop(SqStack *p) ElemType x; if(p-top=0) x=p-stackp-top; printf

10、(栈顶数据元素%d已经被删除!n,p-stackp-top); p-top=p-top-1; return(x); else printf(Underflow!n); return(0); /获取栈顶元素 ElemType GetTop(SqStack *p) ElemType x; if(p-top=0) x=p-stackp-top;printf(n栈顶元素为:%dn,x); return(x); else printf(Underflow!n); return(0); /遍历顺序栈 void OutStack(SqStack *p) int i; printf(n); if(p-topt

11、op;i=0;i-); printf(第%d个数据元素为:%6dn,i,p-stacki); /置空顺序栈 void setEmpty(SqStack *p) p-top=-1; /主函数 void main() SqStack *q; int cord;ElemType a; printf(第一次使用必须初始化!n); do printf(n*主菜单*n); printf(n 1 初始化顺序栈 n); printf(n 2 插入一个元素 n); printf(n 3 删除栈顶元素 n); printf(n 4 区栈顶元素 n); printf(n 5 置空顺序栈 n); printf(n 6

12、 结束程序运行 n); printf(n*n); printf(你选择的序号是(1,2,3,4,5,6); scanf(%d,&cord); switch(cord) case 1: q = (SqStack * )malloc(sizeof(SqStack); InitStack(q); OutStack(q); break; case 2: printf(请输入要插入的元素:a=); scanf(%d,&a); Push(q,a); OutStack(q); break; case 3: Pop(q); OutStack(q); break; case 4: GetTop(q); OutS

13、tack(q); break; case 5: setEmpty(q); printf(n顺序栈被置空!n); OutStack(q); break; case 6: exit(0); while(cord=6); 运行结果1、初始化书序栈2、3、入栈及出栈4、出栈及取栈顶元素5、6、初始化队列并输入顺序队列7、插入新的队尾元素,即入队8、删除队头数据元素,即出队9、判断队列是否为空。10、取队列头元素。11、遍历顺序队列。实验总结 此次实验,初步学会了建立顺序栈与顺序队列,并学会了栈和队列的基本算法,再次巩固了指针的用法。巩固了在课本上学的知识,加深了对栈和队列的认识与掌握。不过,在编程时,发觉自己在定义结构体和变量时,还有很多不足。而且,在编写程序时,自己有点粗心大意,经常忘记加“;”和“”等。路漫漫其修远兮,还得上下而求索啊!

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

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