1.棧(stack)是運算受限的線性表,這種線性表上的**插入和刪除運算限定在表的某一端進行,允許進行插入和刪除的一端稱為棧頂,另一端稱為棧底.**不含任何資料元素的棧稱為空棧.處於棧頂位置的元素稱為棧頂元素.
棧的修改原則是後進先出,因此,棧又稱為後進先出線性表,簡稱後進先出表.棧的插入和刪除運算分別稱為進棧和出棧.
2.棧的基本運算:
初始化 initstack(s):構造乙個空棧;
int
initstack
(seqstk *stk)
判棧空 emptystack(s):若棧s為空棧,其結果為1 否則結果為0;
int
emptystack
(seqstk *stk)
進棧push(c,x):將元素x插入棧s中,使x成為s的棧頂元素;
int
push
(seqstk *stk,datatype x)
esle
}
4)出棧pop(s):刪除棧頂元素;
int
pop(seqstk *stk)
else
}
5)取棧頂gettop(s):返回棧頂元素;
datatype gettop
(seqstk *stk)
3.棧的基本運算在順序棧上的實現演算法:
1)當空棧:棧頂下標值top==0,如果此時做出棧運算 ,則產生 「下溢」.
2)當棧中的資料元素已經填滿了,如果再進行進棧操作,會發生"上溢"
4.佇列(queue)是有限同類資料元素的線性序列,是一種先進先出(first in first out)的線性表,新增加的資料元素插在佇列尾端,出隊的資料元素在佇列首部被刪除.(排隊的規則是不允許插隊)
5.佇列的基本運算:
1)佇列初始化 initqueue(q):設定乙個空佇列q;
void
initqueue
(cycque,cq)
2)判斷隊列為空 emptyqueue(q):若佇列q為空,則返回值為1,否則返回值為0;
int
emptyqueue
(cycque cq)
3)入佇列enqueue(q,x):將資料元素x從隊尾一端插入佇列,使其成為佇列的新尾元素;
int
enqueue
(cycque cq,datatype x)
else
}
4)出佇列 outqueue(q);刪除對列首元素;
int
outqueue
(cycque cq)
else
}
5)取佇列首元素gethead(q):返回佇列首元素的值.
datatype gethead
(cycque cq)
6.迴圈佇列:為了避免元素的移動,可以將儲存佇列元素的一維陣列首尾相接,形成乙個環狀,
迴圈佇列的入佇列操作語句為:
sq.rear=(sq.rear+1)%maxsize;sq.data[sq.rear]=x;
出佇列操作對應的賦值語句為:
sq.front=(sq.front+1)%maxsize;
7.迴圈佇列滿,佇列空條件
迴圈隊列為空 cq.rearcq.front
迴圈隊列為滿 (cq.rear+1)%maxsizecq.front
第五節 Go資料結構之佇列
一 什麼是佇列 資料結構裡的佇列就是模仿現實中的排隊。如上圖中狗狗排隊上廁所,新來的狗狗排到隊伍最後,最前面的狗狗撒完尿走開,後面的跟上。可以看出佇列有兩個特點 1 新來的都排在隊尾 2 最前面的辦理業務後離隊,後面乙個跟上。根據特點,計算機磚家就歸納以下佇列結構。佇列簡稱fifo,含義自己體會。二...
函式第五節
coding utf 8 1.定義乙個func name 該函式效果如下。assert func lilei lilei assert func hanmeimei hanmeimei assert func hanmeimei hanmeimei def title name if isinsta...
第五節 字典
字典的表現形式為大括號 dict key必須可hash,必須唯一且必須為不可改變的資料型別 value可存放任意多個值,可修改,可不唯一 無序且查詢速度快 鍵 值 鍵值對 1 dic.keys 返回乙個包含字典所有key的列表 2 dic.values 返回乙個包含字典所有value的列表 3 di...