实验目的:
熟练应用链队列,并应用于实际应用中,通彻链队列的原理,编写代码,并成功实现。
实验代码:
头文件:
template<class T>
class Node{
public:
T data;
Node<T> *prior,*next;
};
template<class T>
class LinkQueue{
public:
LinkQueue();
void EnQueue();
T DeQueue();
T GetQueue();
int empty(){if (front==rear) return 1; else return 0;}
private:
Node<T> *front,*rear;};
源文件:
#include"tou.h"
#include <iostream>
using namespace std;
template <class T>
LinkQueue<T>::LinkQueue(){
Node<T> *s=new Node<T>;
s->next=NULL;
front=rear=s;
}
template<class T>
void LinkQueue<T>::EnQueue(){
T x;
cin>>x;
Node<T> *s=new Node<T>;
s->data=x;
s->next=NULL;
rear->next=s;
rear=s;
}
template <class T>
T LinkQueue<T>::DeQueue(){
T x; Node<T> *p=new Node<T>;
if(rear==front) throw"over";
p=front->next; x=p->data;
front->next=p->next;
if(p->next=NULL) rear=front;
delete p;
return x;
}
void main(){
LinkQueue<int>x;
int i,n;
cout<<"please input the number"<<endl;
cin>>n;
for(i=1;i<=n;i++){
x.EnQueue();
}
cout<<x.empty()<<endl;
for(i=1;i<=n;i++){
cout<<x.DeQueue()<<endl;
}
system("pause");
}
实验结果:
实验总结:
链队列是在单链表的基础上做了简单的修改,为了使空队列和非空队列的操作一致,链队列也设立头结点,
除析构函数外,算法时间复杂度均为1,