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