栈和队列实验报告.docx
- 文档编号:3115425
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:16
- 大小:72.55KB
栈和队列实验报告.docx
《栈和队列实验报告.docx》由会员分享,可在线阅读,更多相关《栈和队列实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
栈和队列实验报告
数据结构实验报告
顺序栈的实现和基本操作
一、需求分析
(1)顺序栈
♦栈的典型操作是入栈和出栈,前者将新元素压入栈中,后者弹出栈顶元素。
栈只提供对栈顶元素的访问操作,由top()完成。
Push()和Pop()还有Top()共同构成了栈的最小功能接口。
此外,为了方便使用,栈还有判空,判满和输出栈等功能。
♦输入形式及范围:
输入形式为整型,范围为0~65535。
♦输出形式:
在顺序栈的初始化后显示初始化成功,在判断栈是否
为空时显示当前栈为空,入栈后显示入栈成功或者栈已满。
出栈时显示出栈元素或者栈为空。
输出栈时依次显示栈中元素。
♦程序功能:
初始化栈,判断栈是否为空,判断栈是否为满,入栈,
出栈,取栈顶元素,出栈同时返回栈顶元素和输出栈等功能。
♦测试数据:
初始化后输入栈的长度为4。
判断栈是否为空。
进行5次入栈操作。
分别输入12345
输出栈。
执行2次出栈操作。
输出栈。
查看栈顶元素。
输出栈。
(2)队列
♦队列的典型操作是入队和出队,前者将新元素压入队列中,后者弹出队首头元素。
队列只提供对队头元素和队尾元素的操作,由
DeQueue()和EnQueue(完成。
DeQueue还有EnQueue()共同构成了队列的最小功能接口。
此外,为了方便使用,队列还有判空,判满和输出队列等功能。
♦输入形式及范围:
输入形式为整型,范围为0~65535。
♦输出形式:
在顺序队列的初始化后显示初始化成功,在判断队列
是否为空时显示当前队列为空,入队列后显示入队成功或者队列已满。
出队列时显示出队首元素或者队列为空。
输出队列时依次显示队列中元素。
♦程序功能:
初始化队列,判断队列是否为空,判断队列是否为满,
入队,出队,取队首元素,输出队列等功能。
♦测试数据:
初始化后输入队列的长度为54。
判断队列是否为空。
进行5次入队操作。
分别输入12345
输出队列。
执行2次出队操作。
输出队列。
查看队首元素
二、概要设计
(1)顺序栈
♦为了实现程序的功能,在.H文件中定义了栈的模板类.
template
classStack
{
私有数据成员:
private:
栈的最大长度intMaxSize;
栈顶位置inttop;
顺序栈首地址T*theArray;
公有成员:
public:
栈的初始化voidInitStack(intcapacity=10);
操作结果:
初始化一个默认长度为10的空栈
判断栈是否为空boolIsEmpty()const;初始条件:
栈已存在。
判断栈是否为满boolIsFull()const;初始条件:
栈已存在。
操作结果:
判断栈是否为满。
为满则返回1查看栈顶元素constT&Top()const;
初始条件:
栈已经存在。
操作结果:
查看栈顶元素,且返回其值。
清空栈voidMakeEmpty(){top=-1;}
初始条件:
栈已存在。
操作结果:
清空当前栈中元素。
出栈voidPop();初始条件:
栈已存在。
操作结果:
将当前栈顶元素出栈。
栈为空时提醒当前栈为空。
入栈voidPush(constT&e);
初始条件:
栈已存在。
操作结果:
将当前元素入栈。
栈为满时弹出提醒当前
栈已满。
出栈且返回栈顶元素TTopAndPop();
初始条件:
栈已存在。
操作结果:
当前栈顶元素出栈且返回其值
输出栈voidOutput();初始条件:
栈已存在操作结果:
按顺序输出栈中元素};
♦模板类中包含了以下函数
初始化栈
voidInitStack(intcapacity=10);
判断栈空
boolIsEmpty()const;
判断栈满
boolIsFull()const;
查看栈顶元素constT&Top()const;
置空栈
voidMakeEmpty(){top=-1;}
出栈
voidPop();
入栈
voidPush(constT&e);
出栈且返回栈顶元素TTopAndPop();
输出栈
voidOutput();
(2)队列
♦为了实现程序的功能,在.H文件中定义了队列的模板类
template
{
私有数据成员:
判断队列是否为空boolIsEmpty()const;
初始条件:
队列已存在。
操作结果:
判断队列是否为空。
为空则返回1
判断队列是否为满boolIsFull()const;
操作结果:
判断队列是否为满。
为满则返回1。
查看队列顶元素constT&GetFront()const;
初始条件:
队列已经存在。
操作结果:
查看队列顶元素,且返回其值。
清空队列voidMakeEmpty();初始条件:
队列已存在。
操作结果:
清空当前队列中元素。
出队列TDeQueue();初始条件:
队列已存在。
操作结果:
将当前队列顶元素出队。
队列为空时提醒当前队列为空。
入队列voidEnQueue(constT&x);
初始条件:
队列已存在。
操作结果:
将当前元素入队。
队列为满时弹出提醒当前队列已满。
输出队列voidOutPut();
初始条件:
队列已存在
操作结果:
按顺序输出队列中元素};
♦模板类中包含了以下函数
初始化队列voidInitQueue(intcapacity=10);判断队列是否为空boolIsEmpty()const;判断队列是否为满boolIsFull()const;查看队头元素constT&GetFront()const;置空队列voidMakeEmpty();
出对TDeQueue();
入对voidEnQueue(constT&x);
输出队列voidOutput();
♦运用main函数来调用实现以上功能♦各个函数之间关系表示如下:
三、详细设计
(1)顺序栈
♦栈的初始化:
template
:
InitStack(intcapacity)
{
MaxSize=capacity;theArray=newT[MaxSize];
top=-1;
}
♦判断栈空
template
如果空
boolStack
:
IsEmpty()const//判断栈是否为空
返回1
{
returntop==-1;
}
♦判断栈满
template
如果已满
boolStack
:
IsFull()const//判断栈是否为满
返回1
returntop==MaxSize-1;
//入栈
"< //出栈 ♦入栈函数 template voidStack : Push(constT&e) { if(IsFull())cout<<"栈已满,不能继续插入theArray[++top]=e; } ♦出栈函数: template voidStack : Pop() { if(IsEmpty())cout<<"栈为空"< top--; } ♦出栈且返回栈顶元素: template TStack : TopAndPop() //返回栈顶元素且出栈 if(IsEmpty())cout<<"栈为空"< } ♦查看栈顶元素: template //返回栈顶元素 constT&Stack : Top()const { if(IsEmpty())cout<<"栈为空"< } ♦输出栈: template voidStack : Output() { if(IsEmpty())cout<<"栈为空"< for(i=0;i<=top;i++) cout< ♦顺序main函数 #include #include"malloc.h" #include"stdlib.h" #include"stack.h" voidmain() { Stack intselect; do { cout«"请选择所需操作: "< cout«"\t\t1: 新建栈"< cout«"\t\t2: 判断栈是否为空"< cout«"\t\t3: 判断栈是否为满"< cout<<"\t\t4: 入栈"< cout«"\t\t5: 出栈"< cout«"\t\t6: 查看栈顶元素"< 输出栈"< cout«"\t\t8: 退出程序"< cin>>select; switch(select) { case1: { intn; coutvv"请输入栈长度(默认为10)"< cin>>n; stack.InitStack(n); system("pause");system("cls"); break; } case2: { if(stack.IsEmpty()==1) coutvv"当前栈为空"< elsecout<<"当前栈非空"< break; case3: { if(stack.IsFull()==1) cout<<"当前栈为满"< elsecoutv<"当前栈非满"< break; } case4: { intx; coutvv"请输入即将入栈的元素值"< stack.Push(x); coutvv"入栈成功"< break; } case5: { inti,e; e=stack.TopAndPop(); coutvv"是否查看刚刚出栈的元素? (是,则输入1,否 则输入0)"< cin>>i; if(i=1)cout<<"刚刚出栈元素值为: "< if(i! =1&&i! =0)cout<<"输入有误"< break; } case6: { coutvv"当前栈顶元素值为: "v break; } case7: { coutvv"当前栈中元素为: "< stack.Output();system("
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 队列 实验 报告