无涯教程-Python - 堆栈(Stack)

98 阅读1分钟

Stack 堆栈存储数据元素 就像一堆盘子在厨房里一个个又一个地存放一样,允许在一端的操作可称为堆栈顶部, 无涯教程只能在堆栈中添加或删除元素。

压入堆栈

class Stack:
</span><span class="kwd">def</span><span class="pln"> __init__</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">self</span><span class="pun">.</span><span class="pln">stack</span><span class="pun">=[]</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> </span><span class="kwd">add</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">,</span><span class="pln"> dataval</span><span class="pun">):</span><span class="pln">

# 使用列表追加方法添加元素 if dataval not in self.stack: self.stack.append(dataval) return True else: return False # 使用 peek 查看栈顶

</span><span class="kwd">def</span><span class="pln"> peek</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">):</span><span class="pln">     
    </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">self</span><span class="pun">.</span><span class="pln">stack</span><span class="pun">[-</span><span class="lit">1</span><span class="pun">]</span><span class="pln">

AStack=Stack() AStack.add("Mon") AStack.add("Tue") AStack.peek() print(AStack.peek()) AStack.add("Wed") AStack.add("Thu") print(AStack.peek())

执行以上代码后,将产生以下输出:

Tue
Thu

删除数据

众所周知,无涯教程只能从堆栈中删除过多的数据元素,以下程序中的remove函数返回最顶部元素。

class Stack:
</span><span class="kwd">def</span><span class="pln"> __init__</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">):</span><span class="pln">
    </span><span class="kwd">self</span><span class="pun">.</span><span class="pln">stack</span><span class="pun">=[]</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> </span><span class="kwd">add</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">,</span><span class="pln"> dataval</span><span class="pun">):</span><span class="pln">

# 使用列表追加方法添加元素 if dataval not in self.stack: self.stack.append(dataval) return True else: return False # 使用 peek 查看栈顶

</span><span class="kwd">def</span><span class="pln"> peek</span><span class="pun">(</span><span class="kwd">self</span><span class="pun">):</span><span class="pln">     
    </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">self</span><span class="pun">.</span><span class="pln">stack</span><span class="pun">[-</span><span class="lit">1</span><span class="pun">]</span><span class="pln">

AStack=Stack() AStack.add("Mon") AStack.add("Tue") AStack.peek() print(AStack.peek()) AStack.add("Wed") AStack.add("Thu") print(AStack.peek())

Thu
Wed

参考链接

www.learnfk.com/python-data…