数据结构之 栈 (Python 版)
数据结构之 栈 (Python 版)
-- 利用线性表实现栈
栈的特性: 后进先出
- 基于顺序表实现栈
1 class SStack(): 2 3 ''' 4 基于顺序表 实现的 栈类 5 ''' 6 7 def __init__(self): 8 self._elems = [] 9 10 def is_empty(): 11 return self._elems == [] 12 13 def top(self): 14 if self._elems == [] : 15 raise StackUnderflow(" in Stack.top . ") 16 return self._elems[-1] 17 18 def push(self,elem): 19 self._elems.append(elem) 20 21 def pop(self): 22 if self._elems == [] : 23 raise StackUnderflow(" in Stack.pop .") 24 return self._elems.pop()
- 基于链表技术实现栈
1 class LStack(): 2 3 ''' 4 基于链接表技术实现的栈类, 使用 LNode 作为节点 5 ''' 6 7 def __init__(self): 8 self._top = None 9 10 def is_empty(self): 11 return self._top is None 12 13 def top(self): 14 if self._top is None : 15 raise StackUnderflow(" in LStack.top .") 16 return self._top.elem 17 18 def push(self,elem): 19 self._top = LNode(elem,self._top) 20 21 def pop(slef): 22 if self._top is None : 23 raise StackUnderflow(" in Stack.pop . ") 24 p = self._top 25 slef._top = p.next 26 return p.elem