数据结构:栈 顺序表方法和单链表方法(python版)

时间:2023-03-09 13:19:14
数据结构:栈 顺序表方法和单链表方法(python版)
 #!/usr/bin/env python
# -*- coding:utf-8 -*- class StackUnderflow(ValueError):
pass #链表节点
class Node(object):
def __init__(self, elem, next_ = None):
self.elem = elem
self.next = next_ #顺序表实现栈
class SStack(object):
def __init__(self):
self._elems = [] def is_empty(self):
return self._elems == [] def top(self):
if self.is_empty():
raise StackUnderflow
return self._elems[-1] def push(self, elem):
self._elems.append(elem) def pop(self):
if self.is_empty():
raise StackUnderflow
return self._elems.pop() #链表实现栈
class LStack(object):
def __init__(self):
self._top = None def is_empty(self):
return self._top is None def top(self):
if self.is_empty():
raise StackUnderflow("in LStack.top()")
return self._top.elem def push(self, elem):
self._top = Node(elem, self._top) def pop(self):
if self.is_empty():
raise StackUnderflow("in LStack.pop()")
result = self._top.elem
self._top = self._top.next
return result if __name__=="__main__":
st1 = SStack()
st1.push(3)
st1.push(5)
while not st1.is_empty():
print(st1.pop()) print("============")
st2 = LStack()
st2.push(3)
st2.push(5)
while not st2.is_empty():
print(st2.pop())