欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

实验三顺序队列

程序员文章站 2022-07-09 19:11:04
...

一、实验目的

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;  
}