棧的演算法實現
阿新 • • 發佈:2018-11-08
class Stack(object): def __init__(self): self.pTop = None self.pBottom = None class Node(object): def __init__(self, data=None, pNext=None): self.data = data self.pNext = pNext def pushStack(s, pNew): pNew.pNext = s.pTop s.pTop = pNew def popStack(s): cur = s.pTop while cur != s.pBottom: s.pTop = cur.pNext print("出棧的元素是:%s" % cur.data) cur = cur.pNext else: print("出棧失敗") def showAll(s): cur = s.pTop while cur != s.pBottom: print("元素是:%s" % cur.data) cur = cur.pNext def isEmpty(s): if s.pTop == s.pBottom: print("the stack is empty") return True return False def clearStack(s): """ 和pop的區別在於,pop讓python來清空引用計數為0的資料 clear要我們手動清空 :param s: :return: """ if isEmpty(s): return None cur = s.pTop q = None while cur != s.pBottom: q = cur.pNext del cur cur = q else: s.pBottom = s.pTop s = Stack() p = Node() s.pTop = s.pBottom = p n1 = Node(4) pushStack(s, n1) n2 = Node(5) pushStack(s, n2) n3 = Node(6) pushStack(s, n3) n4 = Node(2) pushStack(s, n4) print("**********遍歷元素***************") showAll(s) # print("************出棧*****************") # popStack(s) print("*************清空棧*************") clearStack(s)