十二 佇列及其順序儲存結構

2021-07-02 23:15:39 字數 1578 閱讀 2011

1、佇列的定義

2、佇列的性質

性質:先進先出(fifo)

3、佇列的順序儲存實現

4、**復用

利用順序鍊錶,實現順序儲存的佇列!

/*

在隊尾新增乙個元素

如果成功,返回1,失敗返回0

*//*

在隊頭移出乙個元素

如果成功,返回被移出的元素指標,否則,返回null

*/seqqueuenode *seqqueue_retrieve(seqqueue *queue) //o(n)

5、順序佇列的優化方案

seqqueue_retrieve();操作,因為刪除的是順序鍊錶的第1個元素,所以每次都需要把後面的元素依次向前移動一位,這就增加了時間複雜度!

定義rear使其始終代表隊尾下乙個元素的下標

沒有必要只將下標為0的位置定義為隊頭!!!

6、改進的演算法

資料結構的定義:

/*

為了保持對外的介面一致

*/typedef

void seqqueue;

typedef

void seqqueuenode;

/*

內部實現的具體定義

*/#ifdef win32

typedef

unsigned

int tseqqueuenode;

#else

typedef

unsigned

long tseqqueuenode;

#endif

//增加了front和rear成員,用於標記隊頭和隊尾

部分**:

/*

在隊尾新增乙個元素

如果成功,返回1,失敗返回0

*/ }

return iret;}/*

在隊頭移出乙個元素

如果成功,返回被移出的元素指標,否則,返回null

*/seqqueuenode *seqqueue_retrieve(seqqueue *queue) //o(1)

} return ret;

}

編譯步驟:

0.1 解壓縮:tar -zxvf seqqueue-1.0.tar.gz/seqqueue-2.0.tar.gz

0.2 進入目錄:./configure

0.3 生成seqlist:make

0.4 執行程式:./seqqueue

佇列 順序儲存結構及其基本運算(迴圈佇列)

該文章主要介紹迴圈佇列的順序儲存結構以及相關運算。標頭檔案 csqqueue.h template class sqqueueclass1 迴圈佇列類模板 原始檔 csqqueue.cpp include include csqqueue.h const int maxsize 100 迴圈隊基本運...

佇列 順序儲存結構,迴圈佇列

為什麼小甲魚上節課說佇列的實現上我們更願意用鏈式儲存結構來儲存?我們先按照應有的思路來考慮下如何構造佇列的順序儲存結構,然後發掘都遇到了什麼麻煩。我們假設乙個佇列有n個元素,則順序儲存的佇列需建立乙個大於n的儲存單元,並把佇列的所有元素儲存在陣列的前n個單元,陣列下標為0的一端則是隊頭。no pic...

關於順序儲存結構佇列

佇列是一種先進先出的線性表 fifo 出佇列的那一端叫做隊頭,入佇列的那一端叫做隊尾。作為線性表,同樣也有各種埠操作,不同的是插入資料只能在隊尾進行,刪除資料只能在隊頭進行。同棧,佇列也有兩儲存方式,先來看看順序佇列。順序隊列入隊方式很簡單,就是在隊尾追加乙個元素,不需要移動任何元素。而出隊方式就只...