棧的存儲優點
⑴ 簡述棧和隊列的順序存儲結構和鏈式存儲結構的優缺點
順序存儲結構是在內存中開辟一個連續的空間用來存儲數據,因此對於內存的需求和苛刻,必須是連續的空間.在數據查找(特別是不按照規律排列的數據),時間復雜度教少.效率高.
鏈式存儲結構是採取連表指針來指示數據的存儲位置,這就可以是在內存中隨意的存儲,沒有必須連續儲存空間的要求,對於內存的要求相對教容易.但是要是是從小到大順序排列的數據,鏈式存儲結構的時間復雜度教小,效率高.但是要是不規則排布的數據一般時間復雜度較高,效率更低
⑵ 在什麼情況下可以用棧來存儲數據
棧:特點就是一個先進後出的結構。
棧的應用:非常廣泛,在CPU內部就有提供棧這個機制。主要用途:函數調用和返回,數字轉字元,表達式求值,走迷宮等等。
在CPU內部棧主要是用來進行子程序調用和返回,中斷時數據保存和返回。在編程語言中:主要用來進行函數的調用和返回。
可以說在計算機中,只要數據的保存滿足先進後出的原理,都優先考慮使用棧,所以棧是計算機中不可缺的機制。
⑶ 棧是什麼結構
問題一:棧和隊列賣坦都是什麼結構 隊列是先進先出:就像一條路,有一個入口和一個出口,先進去的就可以先出去。
而棧就像一個箱子,後放的在上邊,所以後進先出。
兩者的結構通常採用的兩種存儲結構是順序存儲結構和鏈表存儲結構。
問題二:什麼是棧? 棧的定義:棧是一種特殊的表這種表只在表頭進行插入和刪除操作。因此,表頭對於棧來說具有特殊的意義,稱為棧頂。相應地,表尾稱為棧底。不含任何元素的棧稱為空棧。
棧的邏輯結構:假設一個棧S中的元素為an,an-1,..,a1,則稱a1為棧底元素,an為棧頂元 素。棧中的元素按a1 ,a2,..,an-1,an的次序進棧。在任何時候,出棧的元素都是棧頂元素。換句話說,棧的修改是按後進先出的原則進行的.因此,棧又稱為後進先出(Last In First Out)表,簡稱為LIFO表。所以,只要問題滿足LIFO原則,就可以使用棧。
notice:換句話說,棧就是可以一個元素進後,可以接著進行輸出的表.這道題各個選項的進出次序為:
A:進,出,進,出判陵,進,出,進,進,出,出,進,出,進,出
B:進,進,出,進,出,出,進,進,進,出,出,進,出,出
C:進,出,進,進,進,進,出,出,出,出,進,出,進,出
D:進,進,進,進,出,出,進,進,出,出,出,出,進,出
E:錯誤.原因自己仿照上面做做看.
所以這道題選E.明白了嗎?
問題三:棧的兩種存儲結構各有哪些優缺點 順序 存儲結構:
優點:連續存儲,空間利用率高
缺點:不方便數據的增刪
鏈式存儲結構:
優點:對於數據的增刪比較方便
缺點:浪費空間
問題四:棧是不是順序存儲的線性結構啊? 呃~弄明白兩個概念:存儲結構和邏輯結構。主要的存儲結構是順序存儲和鏈式存儲(基本這兩個就OK了)。而邏輯結構是指線性表(棧、隊列屬於線性表的范疇)、圖、二叉樹等概念。理論上所有的邏輯結構都可以用上面兩種存儲結構在計算機內實現(當然從效率、存儲空間等方面考慮實際實現中不同的邏輯結構採用的存儲結構會有所偏重)~舉個類似的例子:汽車和內燃機,內燃機主要有汽油機和柴油機兩類,汽車有卡車、轎車、客車等,理論上所有的汽車都可以用兩種內燃機做動力,我可以說客車是汽車,客車既可以是汽油機驅動的汽車也可以有柴油機驅動的汽車。所以棧是線性表,但棧既可以用掘配戚可以順序存儲實現也可以用鏈式存儲實現。
問題五:棧在數據結構中有什麼作用呢 可以實現很多演算法解決一些問題,比如哈夫曼樹中的一種排序可用棧寫,以及拓撲排序等之類的,還可以用棧解決迷宮尋路問題
問題六:棧和隊列數據結構的特點,什麼情況下用到棧,什麼情況下用到隊列(各舉3個例子) 棧:特點就是一個先進後出的結構。
隊列:特點就是一個先進先出的結構。
一般只要你滿足這個特點就可以稱之為棧或隊列。
棧的應用:非常廣泛,在CPU內部就有提供棧這個機制。主要用途:函數調用和返回,數字轉字元,表達式求值,走迷宮等等。在CPU內部棧主要是用來進行子程序調用和返回,中斷時數據保存和返回。在編程語言中:主要用來進行函數的調用和返回。可以說在計算機中,只要數據的保存滿足先進後出的原理,都優先考慮使用棧,所以棧是計算機中不可缺的機制。
隊列的應用:隊列主要用在和時間有關的地方,特別是操作系統中,隊列是實現多任務的重要機制。windows中的消息機制就是通過隊列來實現的。進程調度也是使用隊列來實現,所以隊列也是一個重要的機鄲。只要滿足數據的先進先出原理就可以使用隊列。
問題七:棧的順序存儲結構 這是結果,需要的話給我個郵箱
/*
在vc++6.0中的輸出結果:
------------------------
初始化棧.....
創建一個包含5個不大於100的正整數值的棧(5個值由計算機隨機產生)...
棧中的元素從棧底到棧頂為:41 67 34 0 69
請輸入要插在棧頂的元素e = 100
棧中的元素從棧底到棧頂為:41 67 34 0 69 100
彈出的棧頂元素 e = 100
棧中的元素從棧底到棧頂為:41 67 34 0 69
棧中元素個數是5
輸出從棧頂到棧底的所有元素:69 0 34 67 41
Press any key to continue
--訂---------------------------
*/
問題八:C語言中的棧、堆是什麼? 計算機中的內存分為兩部分:一部分是棧(stack,也稱堆棧),另一部分是堆(heap)。
棧,可以看作是一摞卡片,最上面的卡片表示程序的當前作用域,這往往就是當前正在執行的函數。當前函數中聲明的所有變數都置於棧頂幀中,即佔用棧頂幀的內存,這就相當於一摞卡片中最上面的一張卡片。如果當前函數調用了另一個函數,舉例來說,當前函數foo()調用了另一個函數bar(),就會在這摞卡片上再加一個新的卡片,這樣bar()就有了自己的棧幀(stack frame)以供使用。從foo()傳遞到bar()的所有參數都會從foo()棧幀復制到bar()棧幀中。(註:棧幀很有意義,因為棧幀可以為每個函數提供一個獨立的內存工作區。如果一個變數是在foo()棧幀中聲明的,那麼調用bar()函數不會對它帶來改變,除非你專門要求修改這個變數。另外,foo()函數運行結束時,棧幀即消失,該函數中聲明的所有變數都不會再佔用內存了。)
堆,一段完全獨立於當前函數或者棧幀的內存區。如果一個函數中聲明了一些變數,而且希望當這個函數完成時其中聲明的變數仍然存在,就可以將這些變數置於堆中。 堆和棧相比,沒那麼清晰的結構性。可以把堆可作是一「堆」小玩藝。程序可以在任何時間向這個「堆」增加新的東西,或者修改堆中已有的東西。
⑷ 簡述棧和隊列的順序存儲結構和鏈式存儲結構的優缺點
順序棧--入棧操作受數組上界的約束有可能發生棧上溢,且需要地址連續的存儲單元。
鏈棧--無須地址連續,便於多個棧共享存儲單元,且不存在棧滿上溢情況。
順序隊列--需地址連續且有假上溢現象(需改為循環隊列才可解決假上溢)
鏈式隊列--特別適合於數據元素變動比較大的情況,且不存在隊列滿而產生的溢出問題。
⑸ 內存堆和棧的區別
一、主體不同
1、內存堆:是一個特定的存儲區或寄存器,它的一端是固定的,另一端是浮動的。
2、棧:是一種運算受限的線性表。
二、特點不同
1、內存堆:允許程序在運行時動態地申請某個大小的內存空間。
2、棧:定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。
三、優勢不同
1、內存堆:棧是個特殊的存儲區,主要功能是暫時存放數據和地址,用來保護斷點和現場。
2、棧:只能在一端進行插入和刪除操作的特殊線性表。按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據。