佇列結構實現

2021-10-10 17:13:21 字數 1472 閱讀 5615

棧和佇列的區別不大,他們的區別主要在於先進先出與先進後出

區別1:

佇列:先進先出

棧:先進後出

區別2:

佇列:只能在表的一端進行插入,在表的另一端進行刪除

棧:只能在表的一端進行插入刪除

區別3:

棧:只能從頂部讀取資料,也就是說最先進入棧底的,需要遍歷整個棧才能取出來,而且在遍歷資料的同時需要為資料開闢臨時空間,保證資料的一致性

下面我們來具體實現乙個佇列結構:

1、就和棧一樣,我們先來建立他的全域性變數

//全域性變數及構造方法

private

int n;

//記錄首結點

private node head;

//記錄最後乙個結點

private node last;

public

queue()

private

class

node

}

2、從佇列中獲取元素

判斷該佇列的最後乙個節點是否為空,如果last為空的話,那麼當前結點要插入的位置就是在last的位置,然後讓首結點指向last;

如果不為空的話,就取出舊結點(last)

建立新的結點給last

讓舊的last元素指向新的結點

佇列總元素個數+1

public

void

enqueue

(string t)

else

//個數加1

n++;}

3、從佇列中拿出乙個元素

首先判斷該佇列最後乙個節點是否為空,如果不是空的話呢,當從最後乙個結點出列

獲取當前第乙個元素的位址

讓head結點指向下乙個結點,在邏輯上刪除這個結點

總結點個數減1

public string dequeue()

// 不是空,出列

// 獲取當前的第乙個元素(對應圖中的1元素)

node oldfirst = head.next;

// 讓head結點指向下乙個結點(對應圖中的2元素)

head.next = head.next.next;

// 個數-1

n--;if

(isempty()

)return oldfirst.item;

}

最後我們寫乙個mian方法來測試我們的佇列是否建立完成

class

test8

}

執行結果:

4a3

false

true

0

佇列實現 佇列的鏈式結構實現

佇列的實現,用單鏈表實現佇列的結構 1 初始化建立佇列 2 釋放佇列 3 清空佇列 4 計算佇列長度 5 判斷佇列是否為空 6 列印佇列元素 7 入隊操作 隊尾插入 8 出隊操作 隊首刪除 include typedef int datatype struct qnode struct lqueue...

佇列 陣列結構實現(迴圈佇列)

當元素較少時 tail位置在front後面 迴圈佇列與普通佇列出隊操作一樣,入隊的元素將會放在tail的位置上,隨後執行tail 操作 出隊時front位置上的元素將會置null,隨後執行front 操作 此時仍能保持著tail位置在front後面的狀態,如下圖所示 當元素繼續新增,最後乙個元素將放...

佇列實現 順序結構

include include define queue size 10 typedef int elemtype typedef enum status typedef struct queuequeue,queueptr 初始化 時間複雜度 o 1 status initqueue queuep...