栈和队列.docx
- 文档编号:9812983
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:17
- 大小:17.28KB
栈和队列.docx
《栈和队列.docx》由会员分享,可在线阅读,更多相关《栈和队列.docx(17页珍藏版)》请在冰豆网上搜索。
栈和队列
顺序栈和循环队列含答案
一.任务
顺序栈的定义及其相关操作。
二.任务要求
(1)定义栈的顺序存储结构。
(2)编写初始化栈的函数。
(3)编写判断栈空的函数。
(4)编写判断栈满的函数。
(5)编写进栈函数。
(6)编写出栈函数。
(7)编写遍历顺序栈的函数。
(8)编写取栈顶元素的函数。
三.工作过程
1.数据结构设计
顺序栈的数据元素类型为int。
如下是其定义,请在下划线处填上相应代码,使其完整。
typedefintElemType;
#defineStackSize100
typedefstructSeqStack{
ElemTypedata[StackSize];
structSeqStacktop;
}SeqStack;/*栈的顺序结构体类型*/
2.功能(函数)定义
请为所做部分的操作进行函数定义,并建立源文件ds31.cpp。
//构造一个空栈
voidInitStack(SeqStack*s){
}
//判断栈空
intStackEmpty(SeqStack*s){
}
//判断栈满
intStackFull(SeqStack*s){
}
//进栈
voidPush(SeqStack*s,ElemTypex){
}
//退栈
intPop(SeqStack*s,ElemType&e){
}
//取栈顶元素
intGetTop(SeqStack*s,ElemType&e){
}
//遍历顺序栈
voidOutStack(SeqStack&s){
}
//数制转换,其中n是被转换的数,d是数制
voidCont(intn,intd){
}
队列操作的实现(循环队列)
一.任务
循环队列的定义及其相关操作。
二.任务要求
(1)定义队列的顺序存储结构(循环队列)。
(2)编写初始化循环队列的函数。
(3)编写判断循环队列空的函数。
(4)编写判断循环队列满的函数。
(5)编写入队函数。
(6)编写出队函数。
(7)编写遍历循环队列的函数。
三.工作过程
1.数据结构设计
队列的数据元素类型为int。
如下是其定义,请在下划线处填上相应代码,使其完整。
typedefintElemType;
#defineMAXSIZE10
typedefstructSqQueue{
ElemTypedata[MAXSIZE];/*一维数组子域*/
intfront;/*头指针子域*/
intrear;/*尾指针子域*/
}SqQueue;/*循环队列的结构体类型*/
2.功能(函数)定义
请为所做部分的操作进行函数定义,并建立源文件ds32.cpp。
//构造一个空队列
voidInitQueue(SqQueue*Q){
}
//判断循环队列空
intQueueEmpty(SeqStack*Q){
}
//判断循环队列满
intQueueFull(SeqStack*Q){
}
//入队
voidEnQueue(SqQueue*Q,ElemTypee){
}
//出队
ElemTypeDeQueue(SqQueue*Q){
}
//遍历循环队列
voidOutQueue(SqQueue*Q){
}
答案部分
注意答案使用的工程文件:
栈:
栈的声明:
(文件的名称ds.h)
#include
usingnamespacestd;
#include
#defineStackSize100
typedefintElemType;
typedefstruct
{
ElemTypedata[StackSize];
inttop;
}SeqStack;
voidinitstack(SeqStack*s);
voidPush(SeqStack*s,ElemTypex);
intPop(SeqStack*s);
intoutstack(SeqStack*s);
voidconversion(inti);
intGetTop(SeqStack*s);
函数的具体含义:
(文件的名称ds.cpp)
#include
usingnamespacestd;
#defineStackSize100//栈的长度
typedefintElemType;//类型
typedefstruct
{
ElemTypedata[StackSize];
inttop;
}SeqStack;
//构造一个空栈S
voidinitstack(SeqStack*s)
{
s->top=-1;//top的首值为-1
}
//进栈函数
voidPush(SeqStack*s,ElemTypex)
{
if(s->top==StackSize-1)//判断栈是否已满
{
cout<<"此栈已满,无法进行进栈操作。
";
return;
}else{
s->top++;
s->data[s->top]=x;}
}
//出栈
intPop(SeqStack*s)
{ElemTypee;
if(s->top==-1)//判断栈是否为空
{
cout<<"此栈为空,无法进行出栈操作。
";
return0;
}
else{
e=s->data[s->top];
s->top--;
cout<<"出栈的数为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 队列