c++怎么实现数字数组的删除数字_C/C++数据结构:栈结构解析,最简单解析,让你一遍就会...
上一章節針對于C語言最基本的數據結構鏈式結構體做了解析,不清楚的可以回顧一下。本章節主要針對于C語言的基礎數據結構棧做以解析。
數據結構之棧
棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
故棧基本操作如下:
(1)創建棧
(2)入棧
(3)出棧
(4)判斷棧是否為NULL
(5)返回棧頂元素
數據結構之棧分類
根據實現棧的方式,我們可以把棧分為以下三種描述方式:
原生數組描述
動態申請內存的數組描述
鏈式結構描述
原生數組描述棧
數組描述棧,只不過多了后進先出的限制而已,它是靜態分配的,即使用前,它的內存就已經以數組的形式分配好了,所以在使用時,需要注意棧頂標記的大小。
舉個例子,把十進制的數字5轉二進制的數字,過程大概是這樣:
原生數組描述棧實現進制轉換代碼
動態數組實現棧
動態申請內存的數組描述不再采用上述實用性的方法了,而是通過封裝相關棧函數去描述這種結構。這是寫數據結構的一種大致方法。
1.結構體定義與棧的創建過程:
結構體定義:描述棧的屬性棧:棧容量,棧頂標記
創建棧其實就是創建結構體變量
具體代碼
ps:棧頂標記初始值一般都是-1 ,為了滿足棧頂標記和數組下標一致
2.入棧操作
注意: 我們的實現是將最新的元素放在了數組的末尾, 那么數組末尾的元素就是我們的棧頂元素,故可以使用棧頂標記去計算棧中的元素個數。然后每次入棧后,棧頂標記往后移動。
具體實現代碼:
3.出棧操作和獲取棧頂元素
注意: 出棧操作應該是將棧頂的元素刪除,由于數組實現的棧無法刪除,故只能把棧頂標記往前移動,簡稱為一種"偽刪除"。
具體實現代碼:
4.判斷棧是否為空
用戶判斷棧中是否有元素,通過棧頂標記去做即可
具體實現代碼:
動態申請內存的數組描述棧實現進制轉換代碼
鏈式棧
鏈式棧:鏈表的頭插法即可
這個不做詳細分析了,希望對大家有幫助!
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!
編程學習軟件分享:
編程學習視頻分享:
分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
C語言C++編程學習交流圈子,點擊下方【了解更多】獲取更多資料!
總結
以上是生活随笔為你收集整理的c++怎么实现数字数组的删除数字_C/C++数据结构:栈结构解析,最简单解析,让你一遍就会...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 充电动画_iPhone
- 下一篇: 华硕 x86 android,【华硕X7