class LinkedListStackNode:
def __init__(self, data):
"""初始化链栈结点
:param data: 链栈结点的数据
"""
self.data = data
self.next = None
class LinkedListStack:
"""链栈
"""
def __init__(self):
"""初始化链栈
"""
self.top = LinkedListStackNode(None)
def IsEmptyStack(self):
"""判断栈是否为空
:return: 空True 非空False
"""
if self.top.next == None:
return True
else:
return False
def GetTopStack(self):
"""获取链栈顶数据
:return self.top.next.data: 栈顶数据
"""
if self.IsEmptyStack():
print("栈空!")
return
else:
return self.top.next.data
def StackTraverse(self):
"""遍历链栈
"""
if self.IsEmptyStack():
print("栈空!")
return
cursorNode = self.top.next
print("当前栈顶至栈底数据为:")
while cursorNode != None:
print(cursorNode.data)
cursorNode = cursorNode.next
if cursorNode == None:
print("------栈底")
else:
print("↓")
def GetStackLength(self):
"""获取当前栈长度
:return count:栈长度
"""
count = 0
if self.IsEmptyStack():
print("栈空!")
return
cursorNode = self.top.next
while cursorNode != None:
count += 1
cursorNode = cursorNode.next
return count
def PushStack(self, element):
"""入栈
"""
newStackNode = LinkedListStackNode(element)
newStackNode.next = self.top.next
self.top.next = newStackNode
def PopStack(self):
"""出栈
:return data: 出栈数据
"""
if self.IsEmptyStack():
print("栈空!")
return
else:
removedStackNode = self.top.next
self.top.next = removedStackNode.next
data = removedStackNode.data
del removedStackNode
return data
def CreateStackByInput(self):
"""创建链栈
"""
data = input("请输入栈顶数据,按#结束:")
while data != '#':
self.PushStack(data)
data = input("请输入栈顶数据,按#结束:")
self.StackTraverse()
ls = LinkedListStack()
if ls.IsEmptyStack():
print("栈空!")
else:
print("栈非空!")
ls.CreateStackByInput()
data = input("输入入栈数据:")
ls.PushStack(data)
print("栈长度:", ls.GetStackLength())
print("栈顶数据:", ls.GetTopStack())
print("出栈数据:", ls.PopStack())
ls.StackTraverse()
----------------------------------------------------------------
栈空!
请输入栈顶数据,按#结束:1
请输入栈顶数据,按#结束:2
请输入栈顶数据,按#结束:3
请输入栈顶数据,按#结束:4
请输入栈顶数据,按#结束:#
当前栈顶至栈底数据为:
4
↓
3
↓
2
↓
1
------栈底
输入入栈数据:100
栈长度: 5
栈顶数据: 100
出栈数据: 100
当前栈顶至栈底数据为:
4
↓
3
↓
2
↓
1
------栈底
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/98105.html