當前位置:
首頁 > 知識 > 今日學習「棧」的一個例子——自定義棧結構,與上一篇大致相同

今日學習「棧」的一個例子——自定義棧結構,與上一篇大致相同

棧是一種「後進先出」或「先進後出」的數據結構,Python列表本身就可以實現棧結構的基本操作。

下面的代碼是使用裂變模擬棧結構的用法,實現了入棧,出棧,判斷棧是否為空,是否已滿以及改變棧大小等操作。

class Stack:
def __init__(self,size=10):
self._content= #使用列表存放棧的元素
self._size=size #初始化棧大小
self._current=0 #棧中元素個數初始化為0

def empty(self):
self._content=
self._current=0

def isEmpty(self):
if not self._content:
return True
else:
return False

def setSize(self,size): #如果縮小棧空間,則刪除指定大小之後的已有元素
if size<self._current:
for i in range(size,self._current)[::-1]:
del self._content[i]
self._current=size
self._size=size

def isFull(self):
if self._current==self._size:
return True
else:
return False

def push(self,v):
if len(self._content)<self._size:
self._content.append(v)
self._current=self._current+1 #棧中的元素個數加1
else:
print("Stack Full!")

def pop(self):
if self._current:
self.current=self._current-1 #棧中的個數減1
return self._content.pop
else:
print("Stack is empty!")

def show(self):
print(self._content)

def showRemainderSpace(self):
print("Stack can still PUSH=", self._size-self._current,"elements.")

if __name__=="__main__":
print("Please use me as a module.")

將代碼保存為Stack.py文件,下面代碼演示了自定義棧結構的用法:

1 ======= RESTART: C:/Users/Administrator/Desktop/時間寶/python/Stack.py =======
2 Please use me as a module.
3 >>> import Stack
4 >>> s=Stack.Stack
5 >>> s.isEmpty
6 True
7 >>> s.isFull
8 False
9 >>> s.push(5)
10 >>> s.push(8)
11 >>> s.push("a")
12 >>> s.pop
13 "a"
14 >>> s.push("b")
15 >>> s.push("c")
16 >>> s.show
17 [5, 8, "b", "c"]
18 >>> s.showRemainderSpace
19 ("Stack can still PUSH=", 5, "elements.")
20 >>> s.setSize(3)
21 >>> s.isFull
22 True
23 >>> s.show
24 [5, 8, "b"]
25 >>> s.setSize(5)
26 >>> s.push("d")
27 >>> s.push("ddddddddd")
28 >>> s.push(3)
29 Stack Full!
30 >>> s.show
31 [5, 8, "b", "d", "ddddddddd"]
32 >>>

以上就是這次分享的內容,有什麼錯誤或有什麼問題,請指出!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

Servlet做簡單的ajax增刪改查(分頁)
今日學習-『二叉樹』
Oracle 11g DG手工switchover切換標準化流程
Oracle PL/SQL引用型變數
linux 自動備份資料庫

TAG:達人科技 |