实验4:栈和队列的基本操作实现及其应用之《链队列》
来源:互联网 发布:盖伊福克斯面具淘宝 编辑:程序博客网 时间:2024/05/16 02:05
实验4:栈和队列的基本操作实现及其应用之链队列
一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
1、自己确定结点的具体数据类型和问题规模:
分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
分别建立一个顺序队列和链队列,实现队列的入队和出队操作。
2、设计算法并写出代码,实现一个十将二进制转换成2进制数。
3、选做题(*)
设计一个模拟饭堂排队打饭管理软件,实现“先来先打饭”的排号叫号管理。
三、实验步骤
1、依据实验内容分别说明实验程序中用到的数据类型的定义
实验中选用的是整型来进行栈的数据输入。
2、相关操作的算法表达;
入队列:只考虑在链表的尾部进行,链队列带头结点,让队头指针和队尾指针均指向头结点。
出队列:只考虑在链队列的头部进行,需要注意队列长度等于1的特殊情况。
3、完整程序;
#include<iostream>using namespace std;const int S=10;struct Node{int data;Node *next;};class LinkQueue{public:LinkQueue();void Push(int x);int Pop();int Gettop(){ if(front!=rear) return front->next->data; }int Empty(){if(front==rear)return 1; else return 0;}private: Node *front,*rear;};LinkQueue::LinkQueue(){Node *s;s=new Node;s->next=NULL;front=rear=s;}void LinkQueue::Push(int x){ Node *s; s=new Node;s->data=x; s->next=NULL; rear->next=s;rear=s;}int LinkQueue::Pop(){ int x; Node *p;if(rear==front) throw"下溢";p=front->next;x=p->data;front->next=p->next;if(p->next==NULL) rear=front;delete p;return x;}int main(){ int i,s,x;LinkQueue Stact;do{cout<<endl<<"\t\t\t 链队列"<<endl<<"\t\t\t输入进队列的数:";cin>>i;cout<<"\t\t\t是否继续输入?(1/0):";cin>>s;Stact.Push(i);}while(s);while(1){cout<<endl<<"\t\t\t 链队列"; cout<<endl<<"\t\t\t 1、入队列";cout<<endl<<"\t\t\t 2、出队列";cout<<endl<<"\t\t\t 3、队列顶数";cout<<endl<<"\t\t\t 4、队列是否为空"; cout<<endl<<"\t\t\t请选择操作(0-4):";cin>>x;cout<<endl;if(x==0)break;switch(x) {case 1: { do { cout<<endl<<"\t\t\t输入进队列的数:"; cin>>i; cout<<"\t\t\t是否继续输入?(1/0):"; cin>>s; Stact.Push(i); } while(s); break;}case 2: { cout<<"\t\t\t出队列:"<<Stact.Pop()<<endl; break; } case 3: { cout<<"\t\t\t队列顶数:"<<Stact.Gettop()<<endl; break; } case 4: { cout<<"\t\t\t队列是否为空:"<<Stact.Empty(); break; }default:{cout<<"\t\t\t请输入数字(0-5)!"<<endl;} } }}
4、总结、运行结果和分析。
5、总体收获和不足,疑问等。
在链队列中,运用循环的方式来进行入队列。链队列不同于循环队列,是用指针来实现的,所以不存在“假溢出”问题。
阅读全文
0 0
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《循环队列》
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 实验4:栈和队列的基本操作实现及其应用——链队列
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 实验4:栈和队列的基本操作实现及其应用之《顺序栈》
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用之《进制转换》
- 实验4:栈和队列的基本操作实现及其应用之《排号叫号管理》
- 实验4:栈和队列的基本操作实现及其应用之《进制转换》
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实验4:栈和队列的基本操作实现及其应用——循环队列
- 实验3:栈和队列的基本操作实现及其应用——顺序队列和链队列
- Spring:享受IOC与AOP之美
- java中的getParentFile
- Nginx与PHP(FastCGI)的安装、配置和优化
- MySQL的模糊查询时用中文查不出来解决
- 2588: Spoj 10628. Count on a tree (主席树,树上路径第K大值)
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- HashMap底层详解
- HDU-2200
- Springmvc工作流程图
- OO设计思想->继承与组合的区别
- 去掉服务器返回到浏览器json数据中的null
- Java Platform SE binary已停止运行 Can't load AMD 64-bit.dll on a IA 32-bit platform错误
- 1055: 背包1(填满型01背包 &降维)
- 用C3D抽取特征