棧通常採用的兩種存儲結構
❶ 計算機及應用
1、控制匯流排
2、 10010.11 、
3、 *.後綴名(注意有個小數點) 、
4、
5、匯流排型網
6、數據結構、數據操作、數據的約束條件
7、 添加數據,更新數據和刪除數據等操作功能
8、數據對象和操作類型
9、
10、性能管理 安全管理
11、 額不知道是什麼問題
12、
13、 互斥條件、請求與保持條件
14、一個結構變數、代表一個結點
15、
16、順序棧 、 鏈棧
17、基址寄存器 段地址寄存器
18、響應、確認
19、
20、先根遍歷 中根遍歷 後根遍歷
21、 函數 、 沖突
22、
23、
❷ 棧和隊列都是什麼結構
棧(操作系統):由編譯器自動分配釋放
,存放函數的參數值,局部變數的值等。其操作方式類似於猜褲數據結構中的棧棧使用的是一級緩存,
他們通常都是被調用時處於存儲空間中,調用完畢立即釋放
隊列是一種特殊的線性表數兆物,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。在隊列這種數據結構中,最先插入的元素將是最先被刪除的元素;反之最後插入的元素將是最後被刪除的薯液元素,因此隊列又稱為「先進先出」(fifo—first
in
first
out)的線性表。
❸ 棧的順序存儲是什麼
由於棧是運算受限的線性表,因此線性表的存儲結構對棧也適用,而線性表有順序存儲和鏈式存儲兩種,所以棧也有順序存儲和鏈式存儲兩種。
1.棧的順序存儲棧的順序存儲是利用一組地址連續的存儲單元依次存放從棧底到棧頂的數據元素,並附設指針top指示棧頂。
2.棧的順序存儲類型定義1)用內存動態分配方式定義棧的順序存儲(1)棧的順序存儲表示。
順序棧本質上是順序表的簡化,由於棧底位置是固定不變的,所以可以將棧底位置設置在存儲空間的基地址上,棧頂位置是隨著進棧和退棧操作而變化的,故用top來指示當前棧頂元素的下一個位置,通常稱top為棧頂指針。
❹ 鏈棧和順序棧兩種存儲結構有什麼不同
存儲結構不同:
鏈棧動態分配內存存儲數據,不浪費內存,存儲的數據不連續。
順序棧使用固定大小數組保存數據,數據量小時浪費內存,過多時出問題,存儲數據連續。
它們的具體區別如下:
順序棧的實現在於使用了數組這個基本數據結構,數組中的元素在內存中的存儲位置是連續的,且編譯器要求我們在編譯期就要確定數組的大小,這樣對內存的使用效率並不高,一來無法避免因數組空間用光而引起的溢出問題。在系統將內存分配給數組後,則這些內存對於其他任務就不可用。而對於鏈棧而言,使用了鏈表來實現棧,鏈表中的元素存儲在不連續的地址,由於是動態申請內存,所以我們可以以非常小的內存空間開始,另外當某個項不使用時也可將內存返還給系統。
❺ 棧結構通常採用的兩種儲存結構是和
鏈接存儲:鏈棧
帶有頭指針或頭結點的單循環鏈表。
順序存儲:數組實現,
❻ 棧只能順序存儲,這句話對嗎,為什麼
棧只能順序存儲,這句話不對。棧作為一種數據結構,是一種只能在一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom)。
一個新元素只能從棧頂一端進入,刪除時,只能刪除棧頂的元素,即剛剛被插入的元素。所以棧也稱為後進先出表。線性表可以順序存儲,也可以鏈式存儲,因此棧也可以採用鏈式存儲結構。
(6)棧通常採用的兩種存儲結構擴展閱讀:
棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。棧也稱為後進先出表。
在計算機系統中,棧則是一個具有以上屬性的動態內存區域。程序可以將數據壓入棧中,也可以將數據從棧頂彈出。在i386機器中,棧頂由稱為esp的寄存器進行定位。壓棧的操作使得棧頂的地址減小,彈出的操作使得棧頂的地址增大。
棧在程序的運行中有著舉足輕重的作用。最重要的是棧保存了一個函數調用時所需要的維護信息,這常常稱之為堆棧幀或者活動記錄。堆棧幀一般包含如下幾方面的信息:
1、函數的返回地址和參數。
2、臨時變數:包括函數的非靜態局部變數以及編譯器自動生成的其他臨時變數。
鏈式存儲結構的特點:
1、比順序存儲結構的存儲密度小(鏈式存儲結構中每個結點都由數據域與指針域兩部分組成,相比順序存儲結構增加了存儲空間)。
2、邏輯上相鄰的節點物理上不必相鄰。
3、插入、刪除靈活 (不必移動節點,只要改變節點中的指針)。
4、查找節點時鏈式存儲要比順序存儲慢。
5、每個節點是由數據域和指針域組成。
6、由於簇是隨機分配的,這也使數據刪除後覆蓋幾率降低,恢復可能提高。
順序存儲結構的主要優點是節省存儲空間,因為分配給數據的存儲單元全用存放結點的數據(不考慮c/c++語言中數組需指定大小的情況),結點之間的邏輯關系沒有佔用額外的存儲空間。
採用這種方法時,可實現對結點的隨機存取,即每一個結點對應一個序號,由該序號可以直接計算出來結點的存儲地址。但順序存儲方法的主要缺點是不便於修改,對結點的插入、刪除運算時,可能要移動一系列的結點。
參考資料:網路-棧
參考資料:網路-鏈式存儲結構
參考資料:網路-順序存儲結構
❼ 棧和隊列通常採用的兩種存儲形式是
順序存儲結構和鏈式存儲結構
❽ 棧是什麼結構
問題一:棧和隊列賣坦都是什麼結構 隊列是先進先出:就像一條路,有一個入口和一個出口,先進去的就可以先出去。
而棧就像一個箱子,後放的在上邊,所以後進先出。
兩者的結構通常採用的兩種存儲結構是順序存儲結構和鏈表存儲結構。
問題二:什麼是棧? 棧的定義:棧是一種特殊的表這種表只在表頭進行插入和刪除操作。因此,表頭對於棧來說具有特殊的意義,稱為棧頂。相應地,表尾稱為棧底。不含任何元素的棧稱為空棧。
棧的邏輯結構:假設一個棧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所示。
圖1鏈棧的存儲示意