資料結構筆記(二) 棧 佇列

2022-02-24 11:14:22 字數 2784 閱讀 2536

(一)棧

1、棧是一種後進先出,先進後出的資料結構。

2、棧是一種操作受限的線性表,只允許在一端插入和刪除資料。

3、棧主要包含2個操作,入棧和出棧

4、棧可以用陣列實現,也可以用鍊錶實現。用陣列實現的棧叫做順序棧,用鍊錶實現的棧叫做鏈式棧。

例如:現在有乙個空瓶子。

1、我們依次放入多個蘋果

2、從瓶子中取蘋果的時候,最後放進去的蘋果會最先取出來,最先放進去的蘋果最後取出來。

3、只能從瓶口放入或取出蘋果。(只允許在一端插入和刪除資料)

用陣列實現乙個棧:(這裡用列表代替了)

1

class

arraystack():

23 items = #

這裡用列表代替了

4 count = 0 #

棧中的元素個數

5 n = 10 #

棧的大小67

defpush(self ,item):

8"""9入棧

10:param item:

11:return:

12"""

13if len(self.items) >= self.n: return false #

棧已經滿了

1415 self.count += 1

16return

true

1718

defpop(self):

19"""

20出棧

21:return:

22"""

23if len(self.items) == 0: return false #

棧為空24 item =self.items.pop()

25 self.count -= 1

26return item

(二)佇列

1、佇列是一種先進先出的資料結構。例如:超市排隊付款,排在前面的先付完款,然後先出去。後來的只能排隊,不允許插隊。

2、棧只支援2個基本操作入棧(

push

)和出棧(

pop)。佇列也只支援

2個基本操作,入隊

enqueue()

,放乙個資料到佇列尾部;出隊

dequeue()

,從佇列頭部取乙個元素。

3、佇列和棧一樣。也是一種操作受限的線性表結構。

4、跟棧一樣,也可以用陣列或鍊錶實現。用陣列實現的佇列叫順序佇列,用鍊錶實現的佇列叫鏈式佇列。

用陣列實現乙個佇列(這裡用列表代替了):

1

class

arrayqueue():

23 items = #

陣列4 head = 0 #

隊頭索引

5 tail = 0 #

隊尾索引67

def__init__

(self,n):

8 self.n = n #

陣列大小910

defenqueue(self,item):

11"""

12入隊

13:param item:

14:return:

15"""

16if self.tail == self.n: return false #

隊尾索引等於陣列大小,表示佇列滿了

1718 self.tail += 1

19return

true

2021

defdequeue(self):

22"""

23出隊

24:return:

25"""

26if self.head == self.tail: return false #

隊頭索引==隊尾索引,表示隊列為空

27 item =self.items[self.head]

28 self.items[self.head] = "x"

#標識已經刪除

29 self.head += 1

30return item

(三)練習題

將左括號壓入棧

7elif the_dict[stack.pop()] != i: return false #

如果字串中的右括號不等於預期的右括號,返回false

8return len(stack) == 1

資料結構(二) 棧棧與佇列

棧 stack 是限制插入和刪除只能在乙個位置上進行的表,該位置是表的末端,叫做棧頂 top 它是後進先出 lifo 的。對棧的基本操作只有push 進棧 和pop 出棧 兩種,前者相當於插入,後者相當於刪除最後的元素。實現 利用乙個單鏈表來實現棧的資料結構。而且,因為我們都只針對棧頂元素進行操作,...

資料結構 二 棧 佇列 遞迴

1.用陣列實現乙個順序棧 用陣列實現乙個順序棧 define maxsize 64 棧的最大容量 typedef struct sqstack,sqslink 順序棧說明符 置棧空 void clearstack sqslink s 判棧空 intemptystack sqslink s 元素x進棧...

資料結構筆記 棧和佇列

棧和佇列的特性,乙個是先進後出,乙個是先進先出。對於棧來說,可以通過鍊錶或者陣列來進行實現 對於順序棧來說,如下 順序棧類seqstack的類定義 const int stacksize 10 10是示例性的資料,根據實際問題具體定義 template 定義模板類seqstack class seq...