实验三顺序队列
来源:互联网 发布:卫星影像下载软件 编辑:程序博客网 时间:2024/06/14 21:31
一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
1、自己确定结点的具体数据类型和问题规模:
分别建立一个顺序栈和链栈,实现栈的压栈和出栈操作。
分别建立一个顺序队列和链队列,实现队列的入队和出队操作。
2、设计算法并写出代码,实现一个十将二进制转换成2进制数。
#include<iostream> using namespace std; const int Queuesize=100; template<typename T> class Cirqueue{ public: Cirqueue(){front=rear=Queuesize-1;} //构造函数,初始化空队列 void EnQueue(T x); //入队操作 T DeQueue(); //出队操作 T GetQueue(); //取头元素 void PrintQueue(); //遍历操作 int Empty() {front==rear?return 1:return 0;} //判断是否为空对列 private: T data[Queuesize]; //存放队列元素的数组 int front,rear; //队头和队尾指针 }; template <typename T> void Cirqueue<T>::EnQueue(T x) { if((rear+1)%Queuesize==front) throw"上溢"; rear=(rear+1)%Queuesize; data[rear]=x; } template <typename T> T Cirqueue<T>::DeQueue() { if(rear==front) throw"下溢"; front=(front+1)%Queuesize; return data[front]; } template <typename T> T Cirqueue<T>::GetQueue() { int i; if(rear==front) throw"下溢"; i=(front+1)%Queuesize; return data[i]; } template <typename T> void Cirqueue<T>::PrintQueue() { int p=(front+1)%Queuesize; while(p!=rear){ cout<<data[p]<<" "; p=(p+1)%Queuesize; } cout<<data[p]<<endl; } void main() { Cirqueue<int>b; cout<<"按顺序使“1,2,3,4,5”进队列"<<endl; for(int i=1;i<=5;i++) { b.EnQueue(i); cout<<i<<"入队成功"<<endl;} cout<<"结果如下:"<<endl; b.PrintQueue(); cout<<"出队一个元素"<<b.DeQueue()<<"结果如下:"<<endl; b.PrintQueue(); cout<<"现在对头元素为:"<<b.GetQueue()<<endl; }
阅读全文
0 0
- 实验三 顺序队列
- 实验三顺序队列
- 实验三 顺序队列与链队列
- 实验三、链队列和顺序队列
- 实验三:顺序队列的实现
- 实验三之顺序队列的实现
- 实验三:顺序栈和链队列验证实验
- 实验之顺序队列
- 实验三 顺序栈
- 实验三、顺序栈
- 实验三顺序栈
- 实验三 链队列
- 实验三、循环队列
- 实验三链队列
- 实验3.2 顺序队列&链队列
- 实验四 顺序队列和链队列
- 实验三:栈和队列的基本操作实现及其应用——顺序栈
- 实验三 模拟饭堂排队打饭管理软件(顺序队列、多线程)
- 深度学习与神经网络学习笔记(四)
- 最小二乘法拟合圆公式推导及vc实现
- List接口
- Redis实用技巧之点赞系统设计
- 数据结构——线性结构(8)——动态数组与Vector
- 实验三顺序队列
- Java 封装类型和基本类型区别
- 开发中数据库常见的设计问题
- Matlab的图像
- 1004. Counting Leaves (树)
- PAT 1003. Universal Travel Sites (35)
- 维纳滤波运动模糊图像复原
- SpringCloud(第 046 篇)注解式Schedule配置定时任务,不支持任务调度
- 寻找链表的中间节点