當前位置:編程學習大全網 - 編程軟體 - C語言中的棧、堆是什麽?

C語言中的棧、堆是什麽?

C語言中的堆和棧都是壹種數據項按序排列的數據結構。

棧就像裝數據的桶或箱子

我們先從大家比較熟悉的棧說起吧,它是壹種具有後進先出性質的數據結構,也就是說後存放的先取,先存放的後取。

這就如同我們要取出放在箱子裏面底下的東西(放入的比較早的物體),我們首先要移開壓在它上面的物體(放入的比較晚的物體)。

堆像壹棵倒過來的樹

而堆就不同了,堆是壹種經過排序的樹形數據結構,每個結點都有壹個值。

通常我們所說的堆的數據結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是壹個堆。

由於堆的這個特性,常用來實現優先隊列,堆的存取是隨意,這就如同我們在圖書館的書架上取書。

雖然書的擺放是有順序的,但是我們想取任意壹本時不必像棧壹樣,先取出前面所有的書,書架這種機制不同於箱子,我們可以直接取出我們想要的書。

擴展資料:

關於堆和棧區別的比喻

使用棧就象我們去飯館裏吃飯,只管點菜(發出申請)、付錢、和吃(使用),吃飽了就走,不必理會切菜、洗菜等準備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自由度小。

使用堆就象是自己動手做喜歡吃的菜肴,比較麻煩,但是比較符合自己的口味,而且自由度大。

百度百科-堆棧

  • 上一篇:大數據專業大學排名
  • 下一篇:最簡單的蛋仔怎麽畫
  • copyright 2024編程學習大全網