資料結構第五節

2021-10-07 15:23:23 字數 1962 閱讀 6147

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...