棧是內存條的存儲結構嗎
Ⅰ 數據結構分為邏輯結構和儲存結構,循環隊列和棧分別屬於什麼結構
循環隊列和棧都是線性結構,是邏輯結構的一種。而存儲結構是數據在計算機中的表示,循環隊列在計算機內是順序存儲結構,棧在計算機內可是以順序也可以是鏈式。所以循環隊列和棧都是線性邏輯結構,不能說循環隊列和棧是存儲結構,只能說它們在計算機內的存儲結構
Ⅱ 與數據存儲結構無關的概念是
棧。
你這樣想,存儲結構是計算機存儲的一種物理結構,邏輯結構是一種人自己想像的結構。
或者這樣想,當一個結構,如數組、鏈表、樹、圖,在邏輯結構中只有一種定義,而在物理結構中卻有兩種選擇,那麼這個結構就屬於邏輯結構;相反,當此結構在原有基礎上加上了某種限定,使得其在物理結構中只有一種定義,那麼這個結構就屬於物理(存儲)結構。
對於棧來說,在邏輯上只能是線性結構,而在物理中可以使用順序存儲或鏈式存儲。故棧是一種邏輯結構
Ⅲ 數據結構包含存儲結構那為何棧是數據結構切不是存儲結構
棧(Stack)是一種數據結構,其中數據元素按照 **「後進先出」** 的原則存儲和訪問。因此,棧也是一種存儲結構。但是,與一些其他的存儲結構(如數組和鏈表)不同,棧在實現時並沒有規定具體的存儲結構,以及元素之間的物理關系。這是因為,棧是一種行為受限制的數據結構,其本身的實現方式與存儲結構並不直接相關。
在棧的實現中,可以採用數組、鏈表或其他數據結構來存儲數據元素,但這並不是棧的定義和本質。棧是一種特殊的數據結構,一些操作如 `push` (入棧)和 `pop` (出棧)是棧的基本操作,它們並不依賴於具體的存儲結構。
綜上,雖然棧是一種存儲結構,但它更准確地被描述為一種特殊的數據結構。
Ⅳ 棧只能順序存儲,這句話對嗎,為什麼
棧只能順序存儲,這句話不對。棧作為一種數據結構,是一種只能在一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom)。
一個新元素只能從棧頂一端進入,刪除時,只能刪除棧頂的元素,即剛剛被插入的元素。所以棧也稱為後進先出表。線性表可以順序存儲,也可以鏈式存儲,因此棧也可以採用鏈式存儲結構。
(4)棧是內存條的存儲結構嗎擴展閱讀:
棧是允許在同一端進行插入和刪除操作的特殊線性表。允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(PUSH),刪除則稱為退棧(POP)。棧也稱為後進先出表。
在計算機系統中,棧則是一個具有以上屬性的動態內存區域。程序可以將數據壓入棧中,也可以將數據從棧頂彈出。在i386機器中,棧頂由稱為esp的寄存器進行定位。壓棧的操作使得棧頂的地址減小,彈出的操作使得棧頂的地址增大。
棧在程序的運行中有著舉足輕重的作用。最重要的是棧保存了一個函數調用時所需要的維護信息,這常常稱之為堆棧幀或者活動記錄。堆棧幀一般包含如下幾方面的信息:
1、函數的返回地址和參數。
2、臨時變數:包括函數的非靜態局部變數以及編譯器自動生成的其他臨時變數。
鏈式存儲結構的特點:
1、比順序存儲結構的存儲密度小(鏈式存儲結構中每個結點都由數據域與指針域兩部分組成,相比順序存儲結構增加了存儲空間)。
2、邏輯上相鄰的節點物理上不必相鄰。
3、插入、刪除靈活 (不必移動節點,只要改變節點中的指針)。
4、查找節點時鏈式存儲要比順序存儲慢。
5、每個節點是由數據域和指針域組成。
6、由於簇是隨機分配的,這也使數據刪除後覆蓋幾率降低,恢復可能提高。
順序存儲結構的主要優點是節省存儲空間,因為分配給數據的存儲單元全用存放結點的數據(不考慮c/c++語言中數組需指定大小的情況),結點之間的邏輯關系沒有佔用額外的存儲空間。
採用這種方法時,可實現對結點的隨機存取,即每一個結點對應一個序號,由該序號可以直接計算出來結點的存儲地址。但順序存儲方法的主要缺點是不便於修改,對結點的插入、刪除運算時,可能要移動一系列的結點。
參考資料:網路-棧
參考資料:網路-鏈式存儲結構
參考資料:網路-順序存儲結構