本文目錄一覽:
C語言棧是什麼,棧在哪,需要定義嗎?
「棧」是一種後進先出(LIFO,或叫先進後出FILO)的數據結構。這是數據結構的範疇。
您所說的棧,是由操作系統負責管理的一段棧空間,在遞歸、子程序調用等處應用廣泛。這是操作系統的範疇。
——並不是在C語言範疇討論的概念。
C語言中的棧、堆是什麼?
C語言中的堆和棧都是一種數據項按序排列的數據結構。
棧就像裝數據的桶或箱子
我們先從大家比較熟悉的棧說起吧,它是一種具有後進先出性質的數據結構,也就是說後存放的先取,先存放的後取。
這就如同我們要取出放在箱子裡面底下的東西(放入的比較早的物體),我們首先要移開壓在它上面的物體(放入的比較晚的物體)。
堆像一棵倒過來的樹
而堆就不同了,堆是一種經過排序的樹形數據結構,每個結點都有一個值。
通常我們所說的堆的數據結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
由於堆的這個特性,常用來實現優先隊列,堆的存取是隨意,這就如同我們在圖書館的書架上取書。
雖然書的擺放是有順序的,但是我們想取任意一本時不必像棧一樣,先取出前面所有的書,書架這種機制不同於箱子,我們可以直接取出我們想要的書。
擴展資料:
關於堆和棧區別的比喻
使用棧就象我們去飯館裡吃飯,只管點菜(發出申請)、付錢、和吃(使用),吃飽了就走,不必理會切菜、洗菜等準備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自由度小。
使用堆就象是自己動手做喜歡吃的菜肴,比較麻煩,但是比較符合自己的口味,而且自由度大。
參考資料來源:百度百科-堆棧
什麼是C語言中的棧
棧是個數據結構,指數據的後進先出的方法。c語言可以編寫這種數據結構。另外在c中參數的傳遞實際上也是入棧和出棧的過程。如果不明白,建議看一下數據結構中對棧的講解。
C語言中的棧和堆是什麼?
1、計算機中的內存分為兩部分:一部分是棧(stack,也稱堆棧),另一部分是堆(heap)。
2、 棧,可以看作是一摞卡片,最上面的卡片表示程序的當前作用域,這往往就是當前正在執行的函數。
3、堆,一段完全獨立於當前函數或者棧幀的內存區。如果一個函數中聲明了一些變數,而且希望當這個函數完成時其中聲明的變數仍然存在,就可以將這些變數置於堆中。
補充說明:
1、 堆和棧相比,沒那麼清晰的結構性。可以把堆可作是一「堆」小玩藝。程序可以在任何時間向這個「堆」增加新的東西,或者修改堆中已有的東西。
2、堆棧是一種執行「後進先出」演算法的數據結構。 設想有一個直徑不大、一端開口一端封閉的竹筒。有若干個寫有編號的小球,小球的直徑比竹筒的直徑略小。現在把不同編號的小球放到竹筒裡面,可以發現一種規律:先放進去的小球只能後拿出來,反之,後放進去的小球能夠先拿出來。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237962.html