資料結構之 佇列和棧

2021-08-22 15:12:40 字數 1206 閱讀 3443

之前看啊哈演算法看到這兩種資料結構,它裡面只是簡單說明了一下,所以我先大致了解了一下,若有不全的地方之後再補充。

佇列是一種特殊的線性結構,它只允許在佇列的首部(head)進行刪除操作,這稱為「出隊」,而在佇列的尾部(tail)進行插入操作,這稱為「入隊」。當佇列中沒有元素時(即head==tail),稱為空佇列。

在這個佇列當中,新來的人總是站在佇列的後面,來得越早的人越靠前,也就越早能買到票,就是先來的人先服務,我們稱為「先進先出」(first in first out,fifo)原則。

佇列將是我們今後學習廣度優先搜尋以及佇列優化的 bellman-ford 短路演算法的核心 資料結構。所以現在將佇列的三個基本元素(乙個陣列,兩個變數)封裝為乙個結構體型別, 如下:

struct queue 

;

head 用來記錄佇列的隊首(即第一位), tail用來記錄佇列的隊尾(即後一位)的下乙個位置。因為當佇列中只剩下乙個元素時,隊首和隊尾重合會帶來一些麻煩。我們這裡規定隊首和隊尾重合時,隊列為空。

題目:首先將第 1個數刪除,緊接著將第 2個數放到 這串數的末尾,再將第 3個數刪除並將第 4個數放到這串數的末尾,再將第 5個數刪除…… 直到剩下後乙個數,將後乙個數也刪除。

**:

#include"stdio.h"

struct queue

;int main()

while(q.head棧是一種後進先出的資料結構,它限定為只能在一端進行刪除和插入操作。我們現在小桶內依次放入 2、1、3號小球。假如你現在需要拿出 2號小球, 那就必須先將 3號小球拿出,再拿出 1號小球,後才能將2號小球拿出來。在剛才取小球的 過程中,我們先放進去的小球後才能拿出來,後放進去的小球卻可以先拿出來。

棧可用來解密回文:

#include"stdio.h"

#include"string.h"

int main()

if(len%2==0)

next=mid+1;

else

next=mid+2;

//開始匹配

for(i=next;i<=len-1;i++)

if(top==0)

printf("yes\n");

else

printf("no\n");

getchar();getchar();

return 0;

}

資料結構之棧和佇列

棧 stack 是限定僅在表尾進行插入和刪除操作的線性表。我們把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何資料元素的棧稱為空棧。棧又稱為後進先出 last in first out 的線性表,簡稱lifo結構。棧的插入操作,叫做進棧,也稱壓棧 入棧。類似子彈入彈夾。...

資料結構之棧和佇列

棧是乙個非常常見的資料結構,它在計算機領域中被廣泛的使用,比如作業系統會給每個執行緒分配乙個棧。用來儲存函式呼叫時各個函式的引數,返回值以及臨時變數等。棧的特點是先進後出。通常棧是乙個不考慮排序的資料結構,我們需要o n 時間才能找到棧中的最大值或者最小值,如果想要在o 1 時間內找到棧中的最大值或...

資料結構之棧和佇列

讀自 資料結構 c語言版 嚴蔚敏 吳偉民 清華大學出版社 棧 棧是限定僅在表尾進行插入或刪除操作的線性表。因此對於棧來說,表尾端有其特殊含義,稱為棧頂 top 相應地,表頭端稱為棧底 bottom 不含元素的空表稱為空棧。後進先出lifo 棧的順序儲存表示 define stack init siz...