C/C++數據結構:棧結構解析,最簡單解析,讓你一遍就會

上一章節針對於C語言最基本的數據結構鏈式結構體作了解析,不清楚的能夠回顧一下。本章節主要針對於C語言的基礎數據結構棧作以解析。編程

數據結構之棧

棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操做的線性表。這一端被稱爲棧頂,相對地,把另外一端稱爲棧底。向一個棧插入新元素又稱做進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成爲新的棧頂元素;從一個棧刪除元素又稱做出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成爲新的棧頂元素。數組

故棧基本操做以下:微信

(1)建立棧數據結構

(2)入棧函數

(3)出棧學習

(4)判斷棧是否爲NULL視頻

(5)返回棧頂元素blog

 

數據結構之棧分類

根據實現棧的方式,咱們能夠把棧分爲如下三種描述方式:教程

原生數組描述內存

動態申請內存的數組描述

鏈式結構描述

原生數組描述棧

數組描述棧,只不過多了後進先出的限制而已,它是靜態分配的,即便用前,它的內存就已經以數組的形式分配好了,因此在使用時,須要注意棧頂標記的大小。

舉個例子,把十進制的數字5轉二進制的數字,過程大概是這樣:

原生數組描述棧實現進制轉換代碼

動態數組實現棧

動態申請內存的數組描述不在採用上述實用性的方法了,而是經過封裝相關棧函數去描述這種結構。這是寫數據結構的一種大體方法。

1.結構體定義與棧的建立過程:

結構體定義:描述棧的屬性棧:棧容量,棧頂標記

建立棧其實就是建立結構體變量

具體代碼

ps:棧頂標記初始值通常都是-1 ,爲了知足棧頂標記和數組下標一致

2.入棧操做

注意: 咱們的實現是將最新的元素放在了數組的末尾, 那麼數組末尾的元素就是咱們的棧頂元素,故可使用棧頂標記去計算棧中的元素個數。而後每次入棧後,棧頂標記日後移動。

具體實現代碼:

3.出棧操做和獲取棧頂元素

注意: 出棧操做應該是將棧頂的元素刪除,因爲數組實現的棧沒法刪除,故只能吧棧頂標記往前移動,簡稱爲一種"僞刪除"。

具體實現代碼:

4.判斷棧是否爲空

用戶判斷棧中是否有元素,經過棧頂標記去作便可

具體實現代碼:

動態申請內存的數組描述棧實現進制轉換代碼

鏈式棧

鏈式棧:鏈表的頭插法便可

這個不作詳細分析了,但願對你們有幫助!

另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!

C語言C++編程學習交流圈子,QQ羣757874045點擊進入】微信公衆號:C語言編程學習基地

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!

編程學習軟件分享:

編程學習視頻分享:

相關文章
相關標籤/搜索