参考大话数据结构,利用Python3实现了栈的链表结构。
"""
Python实现链栈
by 勤奋的清风 at 2021-07-17
"""
class Node(object):
def __init__(self, value=None, nxt=None):
self.value = value
self.next = nxt
def set_value(self, value):
self.value = value
def set_next(self, nxt):
self.next = nxt
class LinkStack(object):
def __init__(self):
self.count = 0
self.top = Node()
def push(self, value):
s = Node(value=value, next_node=self.top)
self.top = s
self.count += 1
return True
def push_many(self, values):
if not values:
raise ValueError('请传入数据!')
if type(values) != list:
raise TypeError('请传入列表!')
for v in values:
self.push(v)
def pop(self):
if self.is_empty():
raise OverflowError('当前栈已空,无法取出数据!')
value = self.top.value
self.top = self.top.next
self.count -= 1
return value
def is_empty(self):
if self.count > 0:
return False
return True
def __len__(self):
return self.count
def __str__(self):
s = ''
p = self.top
while p.next:
s += str(p.value) + ' '
p = p.next
return s
def main():
stk = LinkStack()
# stk.pop() # 会报错
stk.push(20)
print('1: ', stk)
stk.push_many([4, 2, 4, 6, 3, 76, 11, 23])
print('2: ', stk)
print(stk.pop())
print('3: ', stk)
print(len(stk))
if __name__ == '__main__':
main()