1. 程式人生 > >鏈式佇列的實現(c++)

鏈式佇列的實現(c++)

佇列的特點是先進先出。

【linkqueue.h程式碼】

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

【結果圖】

這裡寫圖片描述