資料結構 C語言鍊錶構造棧和佇列

2021-10-04 11:24:01 字數 1173 閱讀 2172

2.佇列

​ 才開始學資料結構,寫點筆記,加深理解。

​ 棧和佇列是資料結構的基礎,很多演算法都會基於這兩個結構,比如dfs基於棧和bfs基於佇列。

​ 棧和佇列可以用鍊錶構造,也可以用陣列構造,我這裡是用鍊錶構造,並且是沒有長度的

​ 編寫語言:c

​ 編寫環境:vc++6.0

​ 其實和組合語言的堆疊是乙個意思,先進後出,後進先出。這裡只是用高階語言封裝乙個push函式和pop函式。

​ 用鍊錶尾表示棧底,煉表頭表示棧頂。

​ 這裡我就直接貼原始碼了。可以位元組嘗試寫一下,中間push和pop的過程就參照上圖。

#include#includetypedef struct q

q;//第二個引數可以是任意資料,或者是已知的乙個結構體的首位址。

q* push(q* head,int data)

q* pop(q* head)

return head;

}int main()

while(head->link != null)

putchar('\n');

return 0;

}

​ 類似食堂排隊,先排的人先打到飯,然後出隊,後排的人在後面跟著,這就是佇列的核心先進先出,後進後出 。實現進隊 enqueue和出隊outqueue。

​ 所以,其實和鍊錶儲存差不多,只是要注意要特別注意先進先出即可。

​ 如果用鍊錶實現的話。那煉表頭就是隊首,鍊錶尾就是隊尾。

​ 哎,寫的時候才發現,佇列用結構體很麻煩,還不如直接用指標陣列,或者直接用陣列來的方便。。。。但是既然覺得了要用鍊錶,還是寫完吧。。。

#include#includetypedef struct q

q;//第二個引數可以是任意要用於入隊的資料。

q* enqueue(q* end,int data)

q* outqueue(q* head)

else }

int main()

資料結構 棧 佇列 鍊錶

棧 1,棧只能從表的一端訪問資料,另一端是封閉的。2,在棧中,無論是存資料還是取資料,都必須遵循 先進後出 的原則,即最先進棧的元素最後出棧。基於 棧結構的特點,在實際應用中,通常只會對棧執行以下兩種操作 向棧中新增元素,此過程被稱為 進棧 入棧或壓棧 從棧中提取出指定元素,此過程被稱為 出棧 或彈...

資料結構 棧 佇列 鍊錶

棧 1,棧只能從表的一端訪問資料,另一端是封閉的。2,在棧中,無論是存資料還是取資料,都必須遵循 先進後出 的原則,即最先進棧的元素最後出棧。基於 棧結構的特點,在實際應用中,通常只會對棧執行以下兩種操作 向棧中新增元素,此過程被稱為 進棧 入棧或壓棧 從棧中提取出指定元素,此過程被稱為 出棧 或彈...

資料結構 棧和佇列(c語言)

棧和佇列是兩種重要的線性結構。從資料結構角度來看,棧和佇列也是線性表,其特殊性在於棧和佇列的基本操作是線性表操作的子集,他們是操作受限制的線性表,因此,可稱為限定性的資料結構。但從資料型別角度看,它們是和線性表大不相同的兩類重要的抽象資料型別。由於它們廣泛應用在各種軟體系統中,因此在物件導向的程式設...