棧和佇列
在棧(stack)中,被刪除的元素是最近新增的元素,所以棧的實現方式是後進先出(last-in, first-out);
在佇列中,被刪除的元素是最開始新增的的元素,也就是在動態集合中存放時間最長的那個元素,所以佇列的實現方式是先進先出(first-in,first-out)。
在棧的資料結構中,新增元素的操作被稱之為入棧(push),刪除元素的操作被稱之為出棧,也可以稱為彈出(pop)。如果棧中不存在任何乙個元素,那麼這個棧被稱為空棧。
棧的抽象資料型別定義
adt stack
data
棧中元素具有相同型別及後進先出特性,
相鄰元素具有前驅和後繼關係
operation
initstack
前置條件:棧不存在
輸入:無
功能:棧的初始化
輸出:無
後置條件:構造乙個空棧
destroystack
前置條件:棧已存在
輸入:無
功能:銷毀棧
輸出:無
後置條件:釋放棧所占用的儲存空間
push
前置條件:棧已存在
輸入:元素值x
功能:在棧頂插入乙個元素x
輸出:如果插入不成功,丟擲異常
後置條件:如果插入成功,棧頂增加了乙個元素
pop前置條件:棧已存在
輸入:無
功能:刪除棧頂元素
輸出:如果刪除成功,返回被刪元素值,否則,丟擲異常
後置條件:如果刪除成功,棧減少了乙個元素
gettop
前置條件:棧已存在
輸入:無
功能:讀取當前的棧頂元素
輸出:若棧不空,返回當前的棧頂元素值
後置條件:棧不變
empty
前置條件:棧已存在
輸入:無
功能:判斷棧是否為空
輸出:如果棧為空,返回1,否則,返回0
後置條件:棧不變
endadt
鏈棧
#include
struct node
;template
<
class
t>
class
linkstack
~linkstack()
;void
push
(t x)
; t pop()
; t gettop()
intempty()
private
: node *top;};
template
<
class
t>
void linkstack
::push
(t x)
///入棧
template
<
class
t>
t linkstack
::pop()
///出棧
佇列佇列:只允許在一端進行插入操作,而另一端進行刪除操作的線性表。
空佇列:不含任何資料元素的佇列。
允許插入(也稱入隊、進隊)的一端稱為隊尾,允許刪除(也稱出隊)的一端稱為隊頭。
佇列的操作特性:先進先出(fifo,lilo)
**實現
struct node
;class
linsta
cout<
;linsta::
linsta()
void linsta::
pushd
(int x)
void linsta::
popd()
}
資料結構(C C )課程階段總結(七)
具體實現 執行結果 總結本次實驗中抽象資料型別定義如下 adt sparsematrix 資料關係 r row col 基本操作 createtsmatrix tsmat,s,row,col 初始條件 s為稀疏矩陣,row為行數,col為s的列數。操作結果 用三元組表tsmat儲存s,並返回ok。c...
資料結構 總結
不知不覺間,跟隨賀老師的步伐已經乙個學期了。記得大一的時候,那個時候還沒有接觸到計算機專業的知識,那個時候便聽說了賀老師,那個時候對於老師厲害還沒有什麼概念,只是覺得可能是老師比較博學,比較深層次的了解一些計算機的內容,卻從未想過,這種厲害更加深入到了學生的腦海中,甚至可能會對乙個學生,一群學生,越...
資料結構總結
本文為總結了資料結構知識點,以便複習 本文為總結了資料結構知識點,以便複習 1.緒論 2.線性表 資料結構三要素 邏輯結構 儲存結構 物理結構 資料運算。其中邏輯結構包括線性結構 線性表 棧 佇列 和非線性結構 樹 圖 集合 儲存結構主要有 順序儲存 鏈式儲存 索引儲存 雜湊儲存 又稱hash儲存 ...