Python全系列 教程
3567个小节阅读:5929.5k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
class ListNode:
def __init__(self,val:int):
self.val: int = val
self.next = None
class LinkedListStack:
def __init__(self):
self.flag: ListNode|None = None
self._size: int = 0
def size(self) -> int:
'''
获取栈中元素的个数
'''
return self._size
def is_empty(self) -> bool:
'''
判断栈是否为空
'''
return self._size == 0
def push(self, val: int) -> None:
'''
入栈
'''
# 创建节点
node = ListNode(val)
# 将新节点的next指向原来的栈顶元素
node.next = self.flag
# 将栈顶指针指向新节点
self.flag = node
# 栈中元素个数+1
self._size += 1
def pop(self) -> int:
'''
出栈
'''
# 获取栈顶元素的值
data = self.top()
# 将栈顶指针指向栈顶元素的下一个元素
self.flag = self.flag.next
# 栈中元素个数-1
self._size -= 1
return data
def top(self)-> int:
'''
获取栈顶元素
'''
if self.is_empty():
raise Exception('Stack is empty')
return self.flag.val
def to_list(self):
'''
将栈转换为列表
'''
result = []
# 获取栈顶元素
node = self.flag
# 判断栈顶元素是否为空
while node:
result.append(node.val)
node = node.next
return result
if __name__ =='__main__':
stack = LinkedListStack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.to_list())
print(f'获取栈顶元素:{stack.top()}')
print(stack.to_list())
print(f'出栈:{stack.pop()}')
print(f'栈的元素个数:{stack.size()}')
print(f'栈是否为空:{stack.is_empty()}')