单链表实现栈操作,规定栈顶在链表的头部
代码如下:
# -*- coding:utf-8 -*-
class LinkedStack:
class Node:
def __init__(self,element,next):
self.element = element
self.next = next
#栈方法
def __init__(self):
self.head = None
self.size = 0
def _len_(self):
return self.size
def is_empty(self):
return self.size == 0
def push(self, e):
self.head = self.Node(e,self.head)
#上一条语句喝下面3条语句等价,下面3条语句好理解
# ~ p = self.Node(e,self.head)
# ~ p.next = self.head
# ~ self.head = p
self.size += 1
def top(self):
if self.is_empty():
print('Stack is empty')
return self.head.element
def pop(self):
if self.is_empty():
print('Stack is empty')
answer = self.head.element
self.head = self.head.next
self.size -= 1
return answer
if __name__=='__main__':
S = LinkedStack()
S.push(1)
S.push(2)
S.push(3)
S.push(4)
S.push(5)
S.pop()
S.pop()
S.push(24)
print(S.head.element)
print(S.head.next.element)
print(S.head.next.next.element)
print(S.head.next.next.next.element)
测试结果如下: