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