堆疊是一種特殊的線性表,堆疊簡稱為棧,是限定一端插入和刪除操作的線性表。堆疊的特點是「後進先出」,它後面來,反而它能最先走,它就像疊起來的,被壓得死死的箱子或盤子,先進來的被壓在下面,後來的放到先來的上面,所以要移動的話要先把上面的移動了才能把下面的移動。而在表中。允許插入和刪除的一端被稱作「棧頂」,另一端被稱作「棧底」。通常見元素插入棧頂的操作稱作「入棧」,而刪除棧頂的操作稱作為「出棧」。
而在順序表中,用top指標來指示棧頂元素在順序棧中的位置,當top=0時表示棧為空。而top它的指標會指向它的前乙個元素,假設乙個元素a它要入棧,首先top會往上移到a要壓入的位置,然後元素a才會進來,但是刪除的時候就有點不一樣,元素a先出去,然後top在往下指,和進來的時候不一樣。而棧滿的時候是無法插入元素的。
佇列也是特殊的線性表,而佇列的特點和棧不同,應該說恰好相反,棧的特點是先進「先進後出」,而佇列的特點是「先進先出」,就像一條長長的隊伍,後面來的人就拍到隊伍的末尾,而不知任意的插入隊伍,
佇列簡稱為隊,是限定只能在表的一端作插入運算,另一端作刪除運算的線性表,在表中,允許插入的一端稱作為「隊尾」,允許刪除的一端稱作為「隊首」(或者隊頭),通常將元素插入隊尾的操作稱作為入佇列(或者入隊),而刪除隊首元素的的操作成為出佇列(或者出隊)。
佇列需要兩個端乙個隊首,乙個隊尾,還需要乙個元素用陣列的形式儲存。假設有乙個佇列,兩個指標,乙個表示隊首,乙個表示隊尾,而元素a要插入這個佇列,隊首的指標不動,對隊尾的指標向後移動。而當隊列為滿的時候,如果再加入新的元素,就會產生「溢位」,但是這種情況並不是真正的溢位,在隊首肯能還有空的位置,所以這是一種假的溢位,為了能充分地使用陣列中的儲存空間,把資料組的前端和後端連線起來,形成乙個環形的表,把儲存佇列元素的吧表從邏輯上看成乙個環,成為環形佇列,初始化的時候隊首隊尾相等,而迴圈隊列為滿的時候,隊尾的下乙個元素就是隊首.
堆疊和佇列
堆疊是限定插入和刪除操作都在表的同一端進行的線性表。允許插入和刪除元素的一端稱為棧頂,另一端稱為棧底。若棧中無元素,則稱為空棧。一定要記住的是 棧有後進先出的特點,lase in first out,lifo。棧的基本操作除了插入和刪除外,還有建立和撤銷棧等操作。creat 建立乙個空棧 destr...
堆疊和佇列
堆疊是一種後進先出 lifo 的資料結構,在下推堆疊中,只允許兩種操作 將物件推入堆疊,並將物件從堆疊中彈出。元素只能在堆疊頂部新增和刪除。push將物件新增到堆疊頂部,pop從頂部刪除物件。乙個很好理解的例子,有一沓書,你可以只拿走 刪除 頂部的書,也可以在頂部新增新書。判斷其中的 是否成對出現 ...
資料結構的知識小結 簡述堆疊和佇列
圖中的push s,e 表示將元素e進棧,這個是棧的基本運算之一。在進行元素e新增的時候先判斷top棧頂是否已經滿足棧滿條件,如果還沒有就進行新增。這是入棧設計的基本思路。有進就有出,既然我們了解入棧,那齣棧的設計思路也就大同小異,和入棧一樣,出棧也有條件 top 1 如下 pop s 是堆疊的出棧...