Ⅰ 棧和隊列都是什麼結構
棧(操作系統):由編譯器自動分配釋放
,存放函數的參數值,局部變數的值等。其操作方式類似於數據結構中的棧棧使用的是一級緩存,
他們通常都是被調用時處於存儲空間中,調用完畢立即釋放
隊列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,隊列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列中沒有元素時,稱為空隊列。在隊列這種數據結構中,最先插入的元素將是最先被刪除的元素;反之最後插入的元素將是最後被刪除的元素,因此隊列又稱為「先進先出」(fifo—first
in
first
out)的線性表。
Ⅱ 簡述棧和隊列的順序存儲結構和鏈式存儲結構的優缺點
順序棧--入棧操作受數組上界的約束有可能發生棧上溢,且需要地址連續的存儲單元。
鏈棧--無須地址連續,便於多個棧共享存儲單元,且不存在棧滿上溢情況。
順序隊列--需地址連續且有假上溢現象(需改為循環隊列才可解決假上溢)
鏈式隊列--特別適合於數據元素變動比較大的情況,且不存在隊列滿而產生的溢出問題。
Ⅲ 棧和隊列都是什麼結構
隊列是先進先出:就像一條路,有一個入口和一個出口,先進去的就可以先出去。
而棧就像一個箱子,後放的在上邊,所以後進先出。
兩者的結構通常採用的兩種存儲結構是順序存儲結構和鏈表存儲結構。
Ⅳ 棧和隊列都是什麼結構
棧和隊列都是線性結構,隊列是先進先出,就像一條路,有一個入口和一個出口,先進去的就可以先出去。而棧就像一個箱子,後放的在上邊,所以後進先出。棧(stack)又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
Ⅳ 簡述棧和隊列的順序存儲結構和鏈式存儲結構的優缺點
順序存儲結構是在內存中開辟一個連續的空間用來存儲數據,因此對於內存的需求和苛刻,必須是連續的空間.在數據查找(特別是不按照規律排列的數據),時間復雜度教少.效率高.
鏈式存儲結構是採取連表指針來指示數據的存儲位置,這就可以是在內存中隨意的存儲,沒有必須連續儲存空間的要求,對於內存的要求相對教容易.但是要是是從小到大順序排列的數據,鏈式存儲結構的時間復雜度教小,效率高.但是要是不規則排布的數據一般時間復雜度較高,效率更低
Ⅵ 棧和隊列通常採用的兩種存儲形式是
順序存儲結構和鏈式存儲結構
Ⅶ 計算機c語言中 什麼是棧和隊列
棧(Stack)是僅限制在表的一端進行插入和刪除運算的線性表,稱插入、刪除這一端為棧頂,另一端稱為棧底。表中無元素時為空棧。棧 的修改是按後進先出的原則進行的,我們又稱棧為LIFO表(Last In First Out)。通常棧有順序棧和鏈棧兩種存儲結構。 棧的基本運算有六種: ·構造空棧:InitStack(S) ·判棧空: StackEmpty(S) ·判棧滿: StackFull(S) ·進棧: Push(S,x) ·退棧: Pop(S) ·取棧頂元素:StackTop(S) 在順序棧中有"上溢"和"下溢"的現象。 ·"上溢"是棧頂指針指出棧的外面是出錯狀態。 ·"下溢"可以表示棧為空棧,因此用來作為控制轉移的條件。 順序棧中的基本操作有六種:·構造空棧·判棧空·判棧滿·進棧·退棧·取棧頂元素 鏈棧則沒有上溢的限制,因此進棧不要判棧滿。鏈棧不需要在頭部附加頭結點,只要有鏈表的頭指針就可以了。 鏈棧中的基本操作有五種:·構造空棧·判棧空·進棧·退棧·取棧頂元素 隊列(Queue)是一種運算受限的線性表,插入在表的一端進行,而刪除在表的另一端進行,允許刪除的一端稱為隊頭(front),允許插入的 一端稱為隊尾(rear) ,隊列的操作原則是先進先出的,又稱作FIFO表(First In First Out) 。隊列也有順序存儲和鏈式存儲兩種存儲結 構。 隊列的基本運算有六種: ·置空隊:InitQueue(Q) ·判隊空:QueueEmpty(Q) ·判隊滿:QueueFull(Q) ·入隊:EnQueue(Q,x) ·出隊:DeQueue(Q) ·取隊頭元素:QueueFront(Q) 順序隊列的"假上溢"現象:由於頭尾指針不斷前移,超出向量空間。這時整個向量空間及隊列是空的卻產生了"上溢"現象。 為了克服"假上溢"現象引入循環向量的概念,是把向量空間形成一個頭尾相接的環形,這時隊列稱循環隊列。 判定循環隊列是空還是滿,方法有三種: ·一種是另設一個布爾變數來判斷; ·第二種是少用一個元素空間,入隊時先測試((rear+1)%m = front)? 滿:空; ·第三種就是用一個計數器記錄隊列中的元素的總數。 隊列的鏈式存儲結構稱為鏈隊列,一個鏈隊列就是一個操作受限的單鏈表。為了便於在表尾進行插入(入隊)的操作,在表尾增加一個尾指 針,一個鏈隊列就由一個頭指針和一個尾指針唯一地確定。鏈隊列不存在隊滿和上溢的問題。在鏈隊列的出隊演算法中,要注意當原隊中只 有一個結點時,出隊後要同進修改頭尾指針並使隊列變空。
Ⅷ 棧和隊列不是邏輯結構嗎,它們的順序和鏈式才是存儲結構,一題中說棧也是存儲結構,請解釋一下
棧作為一種數據結構,是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據。棧具有記憶作用,對棧的插入與刪除操作中,不需要改變棧底指針。
(8)棧和隊列屬於存儲結構擴展閱讀:
棧的順序存儲結構利用內存中的一片起始位置確定的連續存儲區域來存放棧中的所有元素,為了指示棧頂的准確位置,還需要引入一個棧頂指示變數top。設數組data[MAXSIZE]為棧的存儲空間,其中MAX-SIZE是一個預先設定的常數,為允許進棧結點的最大可能數目。
初始時棧空,top等於0。當top不等於0時,data[0]為棧底元素,即為當前停留在棧中時間最長的元素。而data[top-1]為最後入棧的元素。當top==MAXSIZE時,表示棧滿,如果此時再有結點進棧,將發生「上溢」的錯誤,而當top==0時再執行出棧操作,將發生「下溢」的錯誤。
Ⅸ 棧和隊列的存儲方式
棧和隊列都是在一個特定范圍的存儲單元中存儲的數據,這些數據都可以重新被取出使用。不同的是,棧就象一個很窄的桶先存進去的數據只能最後才能取出來,而且隊列則不一樣,即「先進後出」。隊列有點象日常排隊買東西的人的「隊列」先牌隊的人先買,後排隊的人後買,即「先進先出」。有時在數據結構中還有可能出現按照大小排隊或按照一定條件排隊的數據隊列,這時的隊列屬於特殊隊列,就不一定按照「先進先出」的原則讀取數據了。
Ⅹ 數據結構分為邏輯結構和儲存結構,循環隊列和棧分別屬於什麼結構
循環隊列在教材指明用的順序存儲結構,所以屬存儲結構
棧屬邏輯結構