实验三顺序队列

来源:互联网 发布:卫星影像下载软件 编辑:程序博客网 时间: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;  }  


原创粉丝点击