实验三顺序队列

一、实验目的

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


猜你喜欢

转载自blog.csdn.net/Sing___546/article/details/78303447