您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Python中有哪些實現棧的方法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
python常用的庫:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。
Python實現棧
棧的數組實現:利用python列表方法
代碼如下:
# 列表實現棧,利用python列表方法 class listStack(object): def __init__(self): self.items = [] def is_empty(self): return self.items == 0 def size(self): return len(self.items) def top(self): return self.items[len(self.items)-1] def push(self, value): return self.items.append(value) def pop(self): return self.items.pop() if __name__ =="__main__": stack = listStack() stack.push("welcome") stack.push("www") stack.push("jb51") stack.push("net") print "棧的長度:", stack.size() print "\n".join(['%s:%s' % item for item in stack.__dict__.items()]) #打印棧stack所有元素 print "出棧:",stack.pop() print "出棧:",stack.pop() print "出棧:",stack.pop()
運行結果:
棧的長度: 4
items:['welcome', 'www', 'jb51', 'net']
出棧: net
出棧: jb51
出棧: www
棧的鏈表實現:
棧的鏈表實現中,壓棧(push)類似于在單鏈表中表頭添加節點;出棧(pop)類似于鏈表中表頭刪除節點并返回對應節點值;棧頂元素(top)就是獲取鏈表中的第一個元素
鏈表節點的定義直接嵌套在鏈表棧類中
代碼如下:
# 鏈表實現棧 class linkedStack(object): class Node(object): def __init__(self, value=None, next=None): self.value = value self.next = next def __init__(self): self.top = None self.length = 0 def is_empty(self): return self.length == 0 def size(self): return self.length # 獲取棧頂元素 def get(self): if self.is_empty(): raise Exception("Stack is empty!") return self.top.value # 壓棧 def push(self, value): node = self.Node(value) old_top = self.top self.top = node node.next = old_top self.length += 1 # 出棧 def pop(self): if self.length == 0: raise Exception("Stack is empty!") item = self.top.value curnode = self.top.next self.top.next = self.top self.top = curnode self.length -= 1 return item if __name__ =="__main__": stack = linkedStack() stack.push("welcome") stack.push("www") stack.push("jb51") stack.push("net") print "棧的長度:", stack.size() print "出棧:",stack.pop() print "出棧:",stack.pop() print "出棧:",stack.pop() print "出棧:",stack.pop()
上述就是小編為大家分享的Python中有哪些實現棧的方法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。