1. c語言中的棧、堆是什麼
C語言中的堆和棧都是一種數據項按序排列的數據結構。
棧就像裝數據的桶或箱子
我們先從大家比較熟悉的棧說起吧,它是一種具有後進先出性質的數據結構,也就是說後存放的先取,先存放的後取。
這就如同我們要取出放在箱子裡面底下的東西(放入的比較早的物體),我們首先要移開壓在它上面的物體(放入的比較晚的物體)。
堆像一棵倒過來的樹
而堆就不同了,堆是一種經過排序的樹形數據結構,每個結點都有一個值。
通常我們所說的堆的數據結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
由於堆的這個特性,常用來實現優先隊列,堆的存取是隨意,這就如同我們在圖書館的書架上取書。
雖然書的擺放是有順序的,但是我們想取任意一本時不必像棧一樣,先取出前面所有的書,書架這種機制不同於箱子,我們可以直接取出我們想要的書。
(1)c語言中的棧子是什麼意思擴展閱讀:
關於堆和棧區別的比喻
使用棧就象我們去飯館里吃飯,只管點菜(發出申請)、付錢、和吃(使用),吃飽了就走,不必理會切菜、洗菜等准備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自由度小。
使用堆就象是自己動手做喜歡吃的菜餚,比較麻煩,但是比較符合自己的口味,而且自由度大。
參考資料來源:網路-堆棧
2. C語言棧是什麼,棧在哪,需要定義嗎
棧有兩種
一種是操作系統中的
進程棧
或者線程棧
系統自動生成
不需要定義
一種是數據結構中的
需要自己實現。
3. c語言中棧的定義
保存數據之用,先壓棧最後出棧,不要與系統關鍵字同名就OK
4. C語言中的棧和堆是什麼
1、計算機中的內存分為兩部分:一部分是棧(stack,也稱堆棧),另一部分是堆(heap)。
2、 棧,可以看作是一摞卡片,最上面的卡片表示程序的當前作用域,這往往就是當前正在執行的函數。
3、堆,一段完全獨立於當前函數或者棧幀的內存區。如果一個函數中聲明了一些變數,而且希望當這個函數完成時其中聲明的變數仍然存在,就可以將這些變數置於堆中。
5. C語言中棧的意思
系統給程序分配的內存空間分成兩個部分,一部分容量小,數據要連續存儲,這個是棧,默認變數都是建在棧上;另一部分容量大,可以不連續存儲,這個是堆,用molloc之類就是建在堆上
6. c語言棧是什麼像這題和棧有什麼關系
棧是一種數據結構,用於存放數據,可以理解為羽毛球筒,羽毛球就是數據,最先放進去的最後才能拿出來。
c語言可以用結構體來定義棧,每個元素以指針指向它前面的元素,最前面的元素稱為棧頂,它的指針為空。
依次讀入字元,遇到括弧則放入括弧棧,遇到其他字元則跳過。
若遇到右括弧,則判斷它前面的元素是否是和他匹配的左括弧,若不是,則返回"不匹配",若是,則將他們2個丟掉,讓左括弧的指針指向空即可。
7. c語言中的棧是指什麼啊
是一種數據結構.這種結構的存取原則相當於取放盤子的過程,放的時候將盤子一個一個堆起來放,取的時候先取原先最後放入的一個,然後依次類推.即後進先出的原則.
棧有順序(數組等)和鏈式(鏈表)兩種存儲結構,它的邏輯結構實質是線性表中的一種,只是這種線性表只允許在其中一端進行存取操作.更為詳細的解釋請參考數據結構一書!
8. C語言中,什麼是棧,什麼是堆
1、棧區(stack):由編譯器自動分配釋放,存放函數的參數值,局部變數等值。局部變數,任務線程函數之類的是放在(使用)棧裡面的,棧利用率高一些。其操作方式類似於數據結構中的棧。特別,棧是屬於線程的,每一個線程會有一個自己的棧。
2、堆區(heap):一般由程序員分配釋放,若程序員不釋放,則可能會引起內存泄漏。注意它和數據結構中的堆是兩回事,分配方式倒是類似於鏈表,常見的就是malloc出來的都是屬於堆區,就像固定出來的區域,到free的時候才釋放,有點類似全局的,靜態的。
(8)c語言中的棧子是什麼意思擴展閱讀
棧內存是由編譯器自動分配與釋放的,它有兩種分配方式:靜態分配和動態分配。
1、靜態分配是由編譯器自動完成的,如局部變數的分配(即在一個函數中聲明一個int類型的變數i時,編譯器就會自動開辟一塊內存以存放變數i)。
2、動態分配由alloca函數進行分配,但是棧的動態分配與堆是不同的,它的動態分配是由編譯器進行釋放,無需任何手工實現。
9. 哪位大神幫我看看這個C語言的題 那個 「棧」是什麼意思啊
棧(stack)是一種【後進先出】的結構,例如:洗干凈的盤子總是逐個往上疊放在之前已經寫好的盤子上,而取用的時候總是先取後洗好的放在最頂部的盤子,「棧」正是這樣一種實際的抽象。在數據結構中也可以叫做「堆棧」,實質上是一種表頭固定,只允許在表尾進行插入或刪除的線性表,具體理解如圖所示:
所以出棧順序應為:D,C,B,A,1,2,3,4,5
10. 在C語言中,什麼叫"棧"
棧是一種數據結構。
棧只允許訪問一個數據項即最後插入的數據項:即最後插入的數據項。移出這個數據項之後才能訪問倒數第二個插入的數據項,依此類推。即後進先出。放入是一種壓棧的過程;取出是一種彈棧的過程,彈棧的時候並刪除這個元素。
以我們生活中的桶裝薯片的例子可以說明這一點,當廠家在生產薯片的時候,要將薯片一片片的裝入食品桶中,這就是一個壓棧的過程。最先放的薯片將在食品桶的最底部。最後放的在食品桶的最上面。 當我們買到薯片,打開包裝,享受薯片給我們帶來的美味時,此時就是一個彈棧的過程,我們只能從最上面開始取出吃掉,然後再取下一片吃,直到將整盒薯片吃完。