链式栈LinkedStack

从结构上来说,栈是“后进者先出,先出者后进”;从操作上来说,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据;从实现上来说,用数组实现的栈称为顺序栈,用链表实现的栈,称为链式栈。

链式栈的结点结构:

根据链式栈的特点,单链表的结构就可以满足栈的结构,所以链式栈的结点结构和单链表的结点结构式相同的。

1
2
3
4
class Node(object):
def __init__(self, data=None, _next=None):
self.data = data
self._next = _next

链式栈:

为了更好体现出链式栈在栈顶的操作,我们将头指针_head换成顶指针_top

1
2
3
class LinkedStack(object):
def __init__(self, _top=None):
self._top = _top

入栈操作:

1
2
3
4
def push(self, value):
new_top = Node(value)
new_top._next = self._top
self._top = new_top

出栈操作:

1
2
3
4
5
6
def pop(self):
top = self._top
if top:
value = top.data
self._top = top._next
return value