隊列的連結儲存結構——鏈隊列 圖解和代碼實現

來源:互聯網
上載者:User

隊列的連結儲存結構——鏈隊列

 圖解:

 

 

LinkQueue.h

//LinkQueue.h#ifndef LINKQUEUE_H#define LINKQUEUE_Htemplate <class T>struct Node{      T data;      Node<T> *next;  //此處<T>也可以省略};template <class T>class LinkQueue{public:    LinkQueue( );          //建構函式,初始化一個空的鏈隊列    ~LinkQueue( );      //解構函式,釋放鏈隊列中各結點的儲存空間    void EnQueue(T x);  //將元素x入隊    T DeQueue( );       //將隊頭元素出隊    T GetQueue( );     //取鏈隊列的隊頭元素    bool Empty( );     //判斷鏈隊列是否為空白private:    Node<T> *front, *rear;  //隊頭和隊尾指標,分別指向頭結點和終端結點};#endif;

 

 

LinkQueue.cpp

//LinkQueue.cpp#include "LinkQueue.h"/* * 前置條件:隊列不存在 * 輸    入:無 * 功    能:初始化隊列 * 輸    出:無 * 後置條件:建立一個空隊列 */template <class T>LinkQueue<T>::LinkQueue( ){Node <T> *s;s=new Node<T>;s->next=NULL;front=rear=s;}/* * 前置條件:隊列存在 * 輸    入:無 * 功    能:銷毀隊列 * 輸    出:無 * 後置條件:釋放隊列所佔用的儲存空間 */template <class T>LinkQueue<T>::~LinkQueue( ){while(front){Node <T> *p;p=front->next;        delete front;    front=p;}}/* * 前置條件:隊列已存在 * 輸    入:元素值s * 功    能:在隊尾插入一個元素 * 輸    出:無 * 後置條件:如果插入成功,隊尾增加了一個元素 */template <class T> void LinkQueue<T>::EnQueue(T x){Node<T> *s;    s=new Node<T>;     s->data=x;          //申請一個資料域為x的結點s    s->next=NULL;    rear->next=s;       //將結點s插入到隊尾    rear=s;}/* * 前置條件:隊列已存在 * 輸    入:無 * 功    能:刪除隊頭元素 * 輸    出:如果刪除成功,返回被刪元素值,否則,拋出刪除異常 * 後置條件:如果刪除成功,隊頭減少了一個元素 */template <class T>T LinkQueue<T>::DeQueue(){    Node <T> *p; int x;    if (rear==front) throw "下溢";    p=front->next; x=p->data;                       //暫存隊頭元素    front->next=p->next;             //將隊頭元素所在結點摘鏈    if (p->next==NULL) rear=front;   //判斷出隊前隊列長度是否為1    delete p;    return x;}/* * 前置條件:隊列已存在 * 輸    入:無 * 功    能:讀取隊頭元素 * 輸    出:若隊列不空,返回隊頭元素 * 後置條件:隊列不變 */template <class T> T LinkQueue<T>::GetQueue(){    if (front!=rear) return front->next->data;}/* * 前置條件:隊列已存在 * 輸    入:無 * 功    能:判斷隊列是否為空白 * 輸    出:如果隊列為空白,返回1,否則,返回0 * 後置條件:隊列不變 */template <class T> bool LinkQueue<T>::Empty( ){    if(front==rear) return 1;    else return 0;}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.