資料結構基礎 14 鏈式佇列的設計與實現

2021-09-21 16:09:33 字數 2047 閱讀 3213

鏈式佇列是基於單鏈表的一種儲存表示, 其形狀如下圖所示:

(佇列的隊頭指標指向單鏈表的第乙個結點, 隊尾指標指向單鏈表的最後乙個結點, 注意沒有無用的空[頭/尾]節點)

用單鏈表表示的鏈式佇列特別適合於資料元素變動比較大的情況, 而且不存在佇列滿而產生溢位的情況;

鏈式佇列結點構造:

[這次我們將節點構造成了類linkqueue的巢狀類]

struct chainnode

type data;

chainnode *next;

};

鏈式佇列構造:

template class linkqueue

type data;

chainnode *next;

};private:

chainnode *m_front; //隊首指標[注意不是指向乙個無用的空節點]

chainnode *m_back; //隊尾指標[注意不是指向乙個無用的空節點]

};

佇列的構造與析構:

template linkqueue::linkqueue()

template linkqueue::~linkqueue()

佇列的四大操作:

//入隊, 這是鏈式佇列的關鍵

template void linkqueue::push(const type &data)

else

}

//出隊

template void linkqueue::pop()

//取隊首元素

template const type &linkqueue::front() const

//取隊尾元素

template const type &linkqueue::back() const

清空佇列與判空操作:

template void linkqueue::makeempty()

}

template bool linkqueue::isempty() const

輸出佇列所有元素(以做測試

):

template ostream &operator<

return os;

}

附-測試**

:

int main()

cout << queue << endl;

cout << queue.front() << endl;

queue.pop();

cout << queue.front() << endl;

cout << queue.back() << endl;

cout << queue << endl;

linkqueuecqueue;

cqueue.push('a');

cout << "cqueue.front = " << cqueue.front() << endl;

cout << "cqueue.back = " << cqueue.back() << endl;

cqueue.pop();

cout << cqueue << endl;

trycatch(const std::exception &e)

return 0;

}

資料結構鏈式佇列

對佇列進行以下操作 1.入佇列 2.出佇列 3.取隊首元素 佇列先進先出,要想實現入佇列,從隊尾插入元素 要想實現出佇列,從隊首刪除元素。在這裡,我們定義頭尾指標,首先對空佇列插入元素,讓頭指標等於尾指標,如果非空,依然讓頭指標指向隊首,尾指標指向要插入的元素。刪除元素時,直接讓頭指標指向下乙個元素...

資料結構之鏈式佇列

我們實現了順序佇列,包括優化,現在我們再來學習下鏈式佇列。注 這裡還是要包含前面我們實現的鏈式鍊錶的標頭檔案和實現檔案。第十個例子,鏈式佇列的實現 標頭檔案 ifndef linkqueue h define linkqueue h typedef void linkqueue linkqueue ...

c 資料結構 鏈式佇列

1.標頭檔案 includeusing namespace std struct linknode linknode const int x,linknode ptr null date x link ptr class linkedqueue 建構函式 構造空佇列 void makeempty 將...