



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四 队列的存储结构和基本操作实验内容 1.链式队列的存储结构C语言中的链式队列存储结构描述: 链式队列的存储结构typedef struct QNodeQElemType data; /*队列中元素*/Struct QNode *next; Qnode,*QueuePtr; /*队列中头、尾指针存储类型定义*/typedef structQueuePtr front,rear; /*对头、对尾指针*/ LinkQueue; /*链式队列数据类型*/2. 链式队列的基本操作 (1)初始化操作:构造一个空链式队列Q。(2)销毁操作:释放队列空间。(3)清空操作:将链式队列设置为空队列。(5)进队列操作:在链式队列队尾插入一个新的元素作为新的队尾元素。(6)出队列操作:将对头元素从队列中删除,并将结果返回。3. 链式队列操作实现的操作步骤(1)实现将链式队列的存储结构和基本操作程序代码。(2)实现main主函数。4.程序代码完整清单#include #include #define MaxSize 5typedef char ElemType;typedef struct qnodeElemType data;struct qnode *next; QNode;typedef structQNode *front;QNode *rear; LiQueue;/基本操作函数声明 void InitQueue(LiQueue *&q); /*初始化链式队列*/ void ClearQueue(LiQueue *&q); /*销毁链式队列*/ int QueueLength(LiQueue *q); /*链式队列长度*/ int QueueEmpty(LiQueue *q); /*清空链式队列*/ void enQueue(LiQueue *&q,ElemType e); /*入链式队列*/ int deQueue(LiQueue *&q,ElemType &e); /*出链式队列*/void main()ElemType e;LiQueue *q;printf(1)初始化链队qn);InitQueue(q);printf(2)依次进链队元素a,b,cn);enQueue(q,a);enQueue(q,b);enQueue(q,c);printf(3)链队为%sn,(QueueEmpty(q)?空:非空);if (deQueue(q,e)=0) printf(队空,不能出队n);elseprintf(4)出队一个元素%cn,e);printf(5)链队q的元素个数:%dn,QueueLength(q);printf(6)依次进链队元素d,e,fn);enQueue(q,d);enQueue(q,e);enQueue(q,f);printf(7)链队q的元素个数:%dn,QueueLength(q);printf(8)出链队序列:);while (!QueueEmpty(q)deQueue(q,e);printf(%c ,e);printf(n);printf(9)释放链队n);ClearQueue(q);void InitQueue(LiQueue *&q) /*初始化链式队列 操作结果:构造一个空队列Q*/q=(LiQueue *)malloc(sizeof(LiQueue);q-front=q-rear=NULL;void ClearQueue(LiQueue *&q) /*释放链式队列 操作结果:释放*/ /* 链式队列结点空间*/QNode *p=q-front,*r;if (p!=NULL)/*释放数据结点占用空间*/r=p-next;while (r!=NULL)free(p);p=r;r=p-next;free(q); /*释放头结点占用空间*/int QueueLength(LiQueue *q) /*求链式队列长度 操作结果:返*/ /* 回链式队列中结点个数*/int n=0;QNode *p=q-front;while (p!=NULL)n+;p=p-next;return(n);int QueueEmpty(LiQueue *q) /*清空链式队列 操作结果:将链式队为空*/ /* 列置链式队列*/if (q-rear=NULL)return 1;elsereturn 0;void enQueue(LiQueue *&q,ElemType e) /*入队列 操作结果:插入元素e为Q的*/ /* 新的队尾元素*/QNode *s; s=(QNode *)malloc(sizeof(QNode);s-data=e;s-next=NULL; if (q-rear=NULL)/*若链队为空,则新结点是队首结点又是队尾结点*/q-front=q-rear=s;elseq-rear-next=s; /*将*s结点链到队尾,rear指向它*/q-rear=s;int deQueue(LiQueue *&q,ElemType &e) /*出队列 操作结果:若队列不空,删*/ /*除Q的队列元素,用e返回其值,并返*/QNode *t; /* 回1,否则返回0*/if (q-rear=NULL)/*队列为空*/return 0;if (q-front=q-rear) /*队列中只有一个结点时*/t=q-front;q-front=q-rear=NULL;else/*队列中有多个结点时*/t=q-front;q-front=q-front-next;e=t-data; free(t);retu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人行委托代扣代缴协议书
- 动力煤仓库出租合同范本
- 合同的变更及补充协议书
- 医院修建纯劳务合同范本
- 个体转让合同协议书范本
- 医用帽子转让协议书模板
- 双方共同还贷款合同范本
- 包袋商标转让协议书范本
- 健身俱乐部融资合同范本
- 大型切割机转让合同范本
- 田英章楷书心经-高清米字格版
- 2021年成都中医药大学辅导员招聘考试题库及答案解析
- 液相色谱柱使用记录
- 项目检查汇报报告(52张)课件
- 直螺纹套筒现场平行检查及记录表
- 精选芭蕾舞男女演员之间的潜规则汇总
- JJG 856-2015 工作用辐射温度计检定规程-(高清现行)
- J-STD-020D[1].1中文版
- 益美高引风式冷却塔特点介绍
- 1沥青混合料生产工艺
- 相亲相爱 简谱
评论
0/150
提交评论