棧和佇列 佇列及其儲存結構

2021-09-10 17:25:41 字數 1765 閱讀 5506

佇列的順序儲存結構

1、佇列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。

2、與棧相反,佇列是一種先進先出的線性表.

3、實現乙個佇列同樣需要順序表或鍊錶作為基礎。

(佇列即可用鍊錶實現,也可以用順序表實現,而棧一般用順序表實現,佇列用鍊錶實現,簡稱鏈佇列 )

typedef

struct qnode qnode,

*queueptr;

typedef

struct

linkqueue;

(頭結點不是必要的,但為了方便操作還是加上)

空佇列時,front和rear都指向頭結點。

建立佇列要完成兩個任務:

一是在記憶體中建立乙個頭結點;

二是將佇列的頭指標和尾指標都指向這個生成的頭結點,因此此時是空佇列。

initqueue

(linkqueue *q)

出佇列操作是將佇列中的第乙個元素移出,對頭指標不發生變化,改變頭結點的next指標即可。

如果原佇列只有乙個元素,那麼就要處理一下隊尾指標。

由於鏈佇列建立在記憶體動態區,因此當乙個佇列不再有用時應當把它及時銷毀掉,以免過多的占用記憶體空間

入佇列操作其實就是在隊尾追加乙個元素,不需要任何移動,時間複雜度為o(1).出佇列則不同,因為我們已經架設下標為0的位置是佇列的隊頭,因此每次出佇列操作所有元素都要向前移動。

//定義乙個迴圈佇列

#define maxsize 100

typedef

struct

//初始化乙個佇列

initqueue

(cyclequeue *q)

//入佇列操作

insertqueue

(cyclequeue *q,elemtype e)

//出佇列操作

deletqueue

(cyclequeue *q,elemtype *e)

棧和佇列 佇列

佇列 又一種特殊的線性表 佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 允許刪除的一端稱為隊頭 front 允許插入的一端稱為隊尾 rear 當佇列中沒有元素時稱為空佇列。佇列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾 即不允許 加塞 每次離開的成員總是...

棧和佇列(佇列)

列隊類 public class myqueue 帶引數構造方法,引數為陣列大小 public myqueue int maxsize 新增資料 從隊尾插入 public void insert int value arr end value 注意是 end 不是end element 刪除資料,從...

棧的佇列(佇列)

二.關於佇列的簡單實現。順序佇列的基本實現和順序棧的實現基本相似。順序佇列在出列和入列的時候會使佇列整體向上移動,會浪費一定的空間。因此出現了一種佇列叫做迴圈佇列。迴圈佇列可以實現空間的重複利用,大大節省了空間。關於迴圈佇列的實現 建立乙個空佇列 struct node struct node in...