資料結構(二) 棧

2022-09-01 05:06:10 字數 2562 閱讀 1889

:後進先出(lifo)表。

特點:只允許在頂部進行訪問操作的順序表。

基本操作

應用場景

棧的鍊錶實現:

1

class

node(object):

2def

__init__(self, value=none, next=none):

3 self.value =value

4 self.next =next56

7class

stack(object):

8def

__init__(self, maxsize=8):

9 self._head = node() #

表頭,無實際意義

10 self._top =none

11 self.maxsize =maxsize

12 self.length =0

1314

defpop(self):

15if self.length >0:

16 node =self._head.next

17 self._head.next =node.next

18 self.length -= 1

19 self._top =self._head.next

20else:21

raise exception('

empty stack')

2223

defpush(self, value):

24if self.length >=self.maxsize:

25raise exception('

stack is full')

26 node =node(value)

27 node.next =self._head.next

28 self._head.next =node

29 self.length += 1

30 self._top =self._head.next

3132

deftop(self):

33if self.length >0:

34return

self._top.value

35else:36

raise exception('

stack is empty')

3738

def__len__

(self):

39return self.length

棧的陣列實現:

1

from array import

array23

class

stack(object):

4def

__init__(self, maxsize=8):

5 self._array = array('i'

, range(maxsize))

6 self.maxsize =maxsize

7 self.length =0

8 self.index = -1

9 self._top =none

1011

defpush(self, value):

12if self.length >=self.maxsize:

13raise exception('

stack is full')

14 self.index += 1

15 self._array[self.index] =value

16 self.length += 1

17 self._top =value

1819

defpop(self):

20if self.length <=0:

21raise exception('

stack is empty')

22 self.index -= 1

23 self.length -= 1

24if self.index >=0:

25 self._top =self._array[self.index]

26else

:27 self._top =none

2829

deftop(self):

30return

self._top

3132

def__len__

(self):

33return self.length

資料結構(二)棧結構

template t stack pop void temp stacklist top top return temp 從棧頂壓入出乙個元素 templatet t stack push const t item top stacklist top item 讀棧頂元素 template t st...

資料結構(二) 棧

棧也是一種線性儲存結構,具有先進後出的特點 word中的撤銷操作,作業系統的方法呼叫都利用了棧 棧還可以用來做匹配,比如括號匹配等 基於陣列的棧入棧push使用陣列的addlast 追加 取資料時使用陣列的getlast 做出棧pop 操作 這次模擬實現的棧是基於上篇部落格實現的動態陣列實現的 pu...

資料結構 二 棧

1.簡介 1.1 棧stack 1 棧是一種線性結構 2 相比陣列,棧對應的操作是陣列操作的子集。3 棧的本質就是乙個陣列,我們把資料排開來放,但是規定 新增元素的時候只能從一端新增元素,也只能從一端取出元素。這一段通常稱為 棧頂 1.2 新增資料的規則 1 相當於在在乙個桶中新增資料。這個操作叫入...