数据结构|链队列的实现(实验3.4)

来源:互联网 发布:linux c一站式编程pdf 编辑:程序博客网 时间:2024/05/19 00:52

一、实验目的

1、   熟练掌队列的结构特点,掌握队列的顺序存储和实现。

2、      学会使用队列解决实际问题。

二、实验内容

1、自己确定结点的具体数据类型和问题规模,建立一个链队列,实现队列的入队和出队操作。


源代码如下:

#include<iostream>  using namespace std;  template < class T >  struct Node{      T data;        Node<T> *next;    };    template <class T>    class LinkQueue  {    public:          LinkQueue();          ~LinkQueue()          {              Node<T> *deleteNode = NULL;              while(!Empty()){                  deleteNode = front->next;                  front->next = deleteNode->next;                  if(deleteNode->next == NULL){                      rear = front;                  }                  delete deleteNode;              }              delete front;          }          void EnQueue(T x);          T DeQueue();          T GetQueue();          void print();          int Empty(){return front == rear ? 1 : 0;}      private:          Node<T> *front,*rear;  };     template <class T>  LinkQueue<T>::LinkQueue()  {      Node<T> *s;      s=new Node<T>;      s->next=NULL;      front=rear=s;  }    template <class T>  void LinkQueue<T>::EnQueue(T x)  {      Node<T> *s;      s=new Node<T>;      s->data=x;      s->next=NULL;      rear->next=s;      rear=s;  }    template <class T>  T LinkQueue<T>::DeQueue()  {      Node<T> *p;      if(rear==front) throw"下溢";      p=front->next;      int x=p->data;      front->next=p->next;      if(p->next==NULL) rear=front;      delete p;      return x;  }    template <class T>  T LinkQueue<T>::GetQueue()  {    return front->next->data;  }    template <class T>  void LinkQueue<T>::print()  {      Node<T> *p = front->next;        while(p->next != NULL){            cout<<p->data<<" ";            p = p->next;        }        cout<<p->data<<endl;    }    void main()  {      LinkQueue<int>s;      cout<<"把元素 1,2,3,4 依次进入链队列"<<endl;      for(int i=1;i<=4;i++)s.EnQueue(i);      cout<<"进入链队列结果为:"<<endl;      s.print();      cout<<"出队一个元素: "<<s.DeQueue()<<endl;cout<<"出队结果为:"<<endl;      s.print();      cout<<"队头元素为:"<<s.GetQueue()<<endl;  }  
运行结果如下:



原创粉丝点击