队列元素的逆置.pdfVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

《数据结构》课程设计报告

题目——队列元素的逆置

班级:

学号:

姓名:

时间:

一、设计目的与内容

1.设计目的

熟练掌握队列和栈的表示和基本操作的实现,能够利用队列和栈设计算法解决简单的应

用问题。

2.设计内容:

编写一个算法将队列中的元素逆置。

二、算法的基本思想

算法的主要思路是:

1.用scanf获取输入数据,得到队列的长度n,然后通过data获取队列中的数据,之后将数

据依次入栈,再出栈,然后再放入队列,由此实现队列的逆序。

基本思路如下:

(1)事先判断栈和队列是否为空,如果栈不为空则清空栈。

(2)提示输入事件。

(3)获得输入数据后,将数据放入队列。

(4)将数据出队,入栈。

(5)再将数据出栈,入队。

(6)将最终队列中的数据输出,结束。

2.对栈的基本操作:

基本思路如下:

(1)申请动态分配的内存空间。

(2)头指针指向栈顶元素,基指针指向栈底。

(3)将数据依次入栈,直至栈满。

(4)出栈时遵循先进后出的原则,始终通过头指针取栈顶元素,取完元素指针向下走一格。

(5)头指针与基指针重合时,栈为空。

3.对队列的基本操作

基本思路如下:

(1)申请动态分配的内存空间。

(2)定义队列的头和尾。

(3)将数据依次放入队列,直至队满。

(4)出队时遵循先进先出的原则,从队首向外提取元素,提取完元素释放该元素空间。

(5)队首与队尾重合时,队为空。

三、测试数据

程序运行实例如下:

请输入队列的长度:4

请输入队列中的元素:

1

2

3

4

队列为:1234

逆序后的队列为:4321

Pressanykeytocontinue

四、源程序及系统文件使用说明

#includestdio.h

#includestdlib.h

#defineOK1

#defineOVERFLOW-1

#defineERROR0

typedefstruct//定义栈

{

int*base;

int*top;

intstacksize;

}SqStack;

typedefstructQNode//对栈中数据的存放

{

intdata;

structQNode*next;

}QNode,*QueuePtr;

typedefstruct//定义队列

{

QueuePtrfront;

QueuePtrrear;

}LinkQueue;

intInitStack(SqStackS)//初始化栈

{

S.base=(int*)malloc(100*sizeof(int));

if(!S.base)exit(OVERFLOW);

S.top=S.base;

S.stacksize=100;

returnOK;

}

intPush(SqStackS,inte)//定义入栈

{

if(S.top-S.base=S.stacksize)

{

S.base=(int*)realloc(S.base,(S.stacksize+100)*sizeof(int));

if(!S.base)exit(OVERFLOW);

S.top=S.base+S.stacksize;

S.stacksize+=100;

}

*S.top++=e;

returnOK;

}

intPop(SqStackS)//定义出栈

{

inte;

if(S.top==S.base)

returnERROR;

e=*--S.top;

returne;

}

intSIsEmpty(SqStackS)//判断栈空

{

if(S.

文档评论(0)

180****7669 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档