上一章節針對于C語言最基本的資料結構鏈式結構體做了決議,不清楚的可以回顧一下,本章節主要針對于C語言的基礎資料結構堆疊做以決議,
資料結構之堆疊
堆疊(stack)又名堆疊,它是一種運算受限的線性表,限定僅在表尾進行插入和洗掉操作的線性表,這一端被稱為堆疊頂,相對地,把另一端稱為堆疊底,向一個堆疊插入新元素又稱作進堆疊、入堆疊或壓堆疊,它是把新元素放到堆疊頂元素的上面,使之成為新的堆疊頂元素;從一個堆疊洗掉元素又稱作出堆疊或退堆疊,它是把堆疊頂元素洗掉掉,使其相鄰的元素成為新的堆疊頂元素,
故堆疊基本操作如下:
(1)創建堆疊
(2)入堆疊
(3)出堆疊
(4)判斷堆疊是否為NULL
(5)回傳堆疊頂元素
資料結構之堆疊分類
根據實作堆疊的方式,我們可以把堆疊分為以下三種描述方式:
原生陣列描述
動態申請記憶體的陣列描述
鏈式結構描述
原生陣列描述堆疊
陣列描述堆疊,只不過多了后進先出的限制而已,它是靜態分配的,即使用前,它的記憶體就已經以陣列的形式分配好了,所以在使用時,需要注意堆疊頂標記的大小,
舉個例子,把十進制的數字5轉二進制的數字,程序大概是這樣:
原生陣列描述堆疊實作進制轉換代碼
動態陣列實作堆疊
動態申請記憶體的陣列描述不在采用上述實用性的方法了,而是通過封裝相關堆疊函式去描述這種結構,這是寫資料結構的一種大致方法,
1.結構體定義與堆疊的創建程序:
結構體定義:描述堆疊的屬性堆疊:堆疊容量,堆疊頂標記
創建堆疊其實就是創建結構體變數
具體代碼
ps:堆疊頂標記初始值一般都是-1 ,為了滿足堆疊頂標記和陣列下標一致
2.入堆疊操作
注意: 我們的實作是將最新的元素放在了陣列的末尾, 那么陣列末尾的元素就是我們的堆疊頂元素,故可以使用堆疊頂標記去計算堆疊中的元素個數,然后每次入堆疊后,堆疊頂標記往后移動,
具體實作代碼:
3.出堆疊操作和獲取堆疊頂元素
注意: 出堆疊操作應該是將堆疊頂的元素洗掉,由于陣列實作的堆疊無法洗掉,故只能吧堆疊頂標記往前移動,簡稱為一種"偽洗掉",
具體實作代碼:
4.判斷堆疊是否為空
用戶判斷堆疊中是否有元素,通過堆疊頂標記去做即可
具體實作代碼:
動態申請記憶體的陣列描述堆疊實作進制轉換代碼
鏈式堆疊
鏈式堆疊:鏈表的頭插法即可
這個不做詳細分析了,希望對大家有幫助!
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!
C語言C++編程學習交流圈子,QQ群757874045【點擊進入】微信公眾號:C語言編程學習基地
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習軟體分享:

編程學習視頻分享:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/140212.html
標籤:其他
