資料結構 鏈式佇列 Linked queue

2021-08-27 02:21:45 字數 3074 閱讀 9242

08年9月入學,12年7月畢業,結束了我在軟體學院愉快豐富的大學生活。此系列是對四年專業課程學習的回顧,索引參見:

鏈式佇列是不同於迴圈陣列的另一種佇列的實現形式。佇列中的元素以node形式儲存。節點node中存有此節點存於佇列中的元素以及指向下乙個元素的指標。鏈式佇列的需要儲存指向隊頭和隊尾的指標的資料成員。同鏈式棧的實現一樣,鏈式佇列的實現尤其重點和難點的部分是編寫自己的析構函式,拷貝建構函式和過載賦值運算子。

我選擇的題目是書中應用程式多項式的編寫。

1.鏈式佇列中的元素以節點的形式儲存,首先編寫結構node的定義和實現。

拷貝建構函式queue(const queue &original);以及過載賦值運算子void operator=(const queue &original);

3.從佇列中繼承乙個新的類extended_queue,新增一些新的功能——size()得到佇列大小,clear()清空佇列,serve_and_retrieve()得到並移出隊頭的元素。

4.分析多項式中每一項既有係數又有指數。定義並實現乙個新的結構term用以表示多項式中的一項。term中含有公有資料成員degree和coefficient。

5.因為多項式的特點,所以定義多項式類polynomial為從類extended_queue中派生出來的類。

並新增他自己的一些成員函式。print()列印多項式;equals_sum()求兩個多項式的和,equals_difference()求兩個多項式的差;degree()得到多項式最高項的係數。

6.實現多項式類。

7.編寫主函式簡單實現並測試多項式的運算。

實驗截圖:

1.同鏈式棧一樣,鏈式佇列中以節點的形式儲存佇列中的元素,所以他的實現與棧有很多相似之處。所不同的是佇列中元素操作原則是「先進先出」,不同於棧的「後進先出」,所以類queue中需要分別儲存指向佇列首元素和尾元素位址的指標。

2.同樣,鏈式佇列要注意編寫自己的析構函式,拷貝建構函式和過載賦值運算子。

3.通過對多項式特點的分析,我們從拓展佇列extended_queue中派生出類polynomial,繼承是c++中非常重要的性質,可以簡化我們很多程式的編寫。

4.多項式中每一項的元素包括係數和指數兩部分,所以我們編寫了結構term用以表示多項式中的每一項,此時類增多,要時刻保持清醒的頭腦了解他們的關係,term是儲存於節點中的entry部分,不同類的儲存我們沒有用類模板,而是使用typedef,這就要很仔細的定義他們的型別,不然很容易出現函式呼叫中型別不能轉換的錯誤。

資料結構鏈式佇列

對佇列進行以下操作 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 將...