- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四 循环队列基本操作及相关算法的实现
一、实验目的:
掌握循环队列的基本操作及在顺序存储结构上的实现。
二、实验环境:
Visual C++6.0
三、实验要求:
(1)实现队列的顺序存储及基本操作
(2)实现两个队列的拼接
四、实验步骤:
(1)数据结构的定义及实现
用结构类型来定义队列的类型
#define MaxSize 100 //最大元素个数
#define ElemType char
#define MaxNumber 100
typedef struct //顺序循环队列的类型定义
{ ElemType data[MaxSize]; //队列元素存储空间
int front; //对头指针
int rear; //队尾指针
}*CircSeqQueue;
#define Apply(pQ) pQ=(CircSeqQueue)malloc(sizeof(CircSeqQueue));
(2) 基本操作定义及实现
void QueueInitial(CircSeqQueue pQ); //顺序循环队列的初始化
int IsEmpty(CircSeqQueue pQ); //顺序循环队列判空
int IsFull(CircSeqQueue pQ); //顺序循环队列判满
void EnQueue(CircSeqQueue pQ,ElemType e); //元素进队
ElemType DeQueue(CircSeqQueue pQ); //元素出队
ElemType GetFront(CircSeqQueue pQ); //取队头元素值
void display(CircSeqQueue pQ); //遍历队列,并显示
void MakeEmpty(CircSeqQueue pQ); //循环队置空
void Union(CircSeqQueue pQ1,CircSeqQueue pQ2);//将队列pQ2所指的队列中的元素加到pQ1所指的队列的队尾
现具体说顺序栈的元素进队和遍历队列的实现方法,其他的基本操作请参看Queue.cpp和具体的源程序
元素进队:
void EnQueue(CircSeqQueue pQ,ElemType e)
{ //若队列不满,则元素e进队
if (IsFull(pQ)) //队列已满,退出
{
printf(队列溢出!);
exit(1);
}
pQ-rear=(pQ-rear+1)%MaxSize; //队尾指针后移
pQ-data[pQ-rear]=e;
}
void display(CircSeqQueue pQ)
{
if (IsEmpty(pQ)) //如果队列为空,显示空队列
{
printf(空队列!\n);
}
while (!IsEmpty(pQ)) //如果不为空,打印队头元素
{
printf(%-5c,pQ-data[(pQ-front+1)%MaxSize]);
pQ-front=(pQ-front+1)%MaxSize; //队头指针向前移一
}
putchar(\n);
}
(3) 实现两个队列的拼接,将队列pQ2所指的队列中的元素加到pQ1所指的队列的队尾
void Union(CircSeqQueue pQ1,CircSeqQueue pQ2)
{
while (!IsEmpty(pQ2))
{
EnQueue(pQ1,pQ2-data[(pQ2-front+1)%MaxSize]);//将Q2的队头元素放到Q1尾
pQ2-front=(pQ2-front+1)%MaxSize; //Q2的队头指针向下移一位
}
}
(4)主程序流程
CircSeqQueue pQ,pQ1,pQ2;
Apply(pQ);
char d[]={a,b,c,d,e,f,g,h};
QueueInitial(pQ);
for(int i=0;i=7;i++) EnQueue(pQ,d[i]);
printf(\n初始队列元素为:);
display(pQ);
for(int j=0;j=7;j++) EnQueue(pQ,d[j]);
printf(出队元素为:%c\n,DeQueue(pQ));
printf(获取此时的队头元素为:%c\n,GetFront(pQ));
print
您可能关注的文档
最近下载
- 国家开放大学《建设法规》形考任务1-4答案(国开电大).docx
- 2020年系统集成项目管理工程师考试下午真题及答案.pdf VIP
- 基于LTE基站功放的模拟预失真器的研究与设计-电磁场与微波技术专业论文.docx VIP
- 儿科应急处置情况报告.docx VIP
- 无废单位培训.pptx
- 优选汽车维修工高级技师题库真题题库【突破训练】.docx VIP
- DL_T 5220-2021 10kV及以下架空配电线路设计规范(附条文说明).docx VIP
- 马工程教育学原理期末练习题(答案版).docx VIP
- 足球比赛记录表(标准版).doc VIP
- 餐饮企业税务筹划问题研究——以海底捞为例.docx
文档评论(0)