隊列的特點是先進先出。
【linkqueue.h代碼】
#ifndef QUEUE_H
#define QUEUE_H
template <class T> class Queue;
template <class T>
class linknode
{
friend class Queue<T>;
private:
T data;
linknode<T> *next;
};
template <class T>
class Queue
{
public:
Queue()
{
front=rear=0;
};
bool Isempty();
void Front();
void Rear();
void Push(T item);
void Pop();
private:
linknode<T> *front;
linknode<T> *rear;
};
template <class T>
inline bool Queue<T>::Isempty()
{
return front==0;
}
template <class T>
void Queue<T>::Push(T item)
{
linknode<T> *p=new linknode<T>();
p->data=item;
p->next=0;
cout<<item<<"進隊"<<endl;
if(Isempty())
{
front=rear=p;
}
else
{
rear->next=p;
rear=p;
}
}
template <class T>
void Queue<T>::Pop()
{
if(Isempty())
{
cout<<"隊列爲空,不能出列"<<endl;
}
else
{
linknode<T> *p=front;
cout<<front->data<<"出隊"<<endl;
front=front->next;
delete p;
}
}
template <class T>
inline void Queue<T>::Front()
{
if(!Isempty())
{
cout<<"隊首元素爲"<< front->data<<endl;
}
else
{
cout<< "隊列爲空"<<endl;
}
}
template <class T>
inline void Queue<T>::Rear()
{
if(!Isempty())
{
cout<<"隊尾元素爲"<< rear->data<<endl;
}
else
{
cout<< "隊列爲空"<<endl;
}
}
#endif
【主程序】
#include "linkqueue.h"
#include <iostream>
using namespace std
int main()
{
Queue<int> q
q.Push(10)
q.Push(20)
q.Push(30)
q.Push(40)
q.Front()
q.Rear()
q.Pop()
q.Pop()
q.Pop()
q.Pop()
system("pause")
return 0
}
【結果圖】