采用链式储存实现栈的初始化入栈出栈
时间: 2023-10-26 21:08:47 浏览: 107
栈的操作入栈演示-C语言栈和队列
链式储存的栈可以通过链表来实现。每个节点包含一个数据元素和一个指向下一个节点的指针。栈顶指针指向链表的头节点。栈的初始化可以通过创建一个空的链表来完成。入栈操作可以通过在链表头插入一个新节点来实现。出栈操作可以通过删除链表头节点来实现。
以下是一个使用链式储存实现栈的示例代码:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Stack:
def __init__(self):
self.top = None
def is_empty(self):
return self.top is None
def push(self, data):
node = Node(data)
node.next = self.top
self.top = node
def pop(self):
if self.is_empty():
raise Exception('Stack is empty')
data = self.top.data
self.top = self.top.next
return data
```
在上面的代码中,`Node`类表示链表的节点,`Stack`类表示栈。`Stack`类有一个栈顶指针`top`,在初始化时指向`None`表示栈为空。`is_empty`方法用于判断栈是否为空,`push`方法用于入栈操作,`pop`方法用于出栈操作。在入栈操作中,创建一个新的节点并将其插入到链表头部;在出栈操作中,删除链表头节点并返回其数据元素。
示例用法:
```python
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.pop()) # 3
print(stack.pop()) # 2
print(stack.pop()) # 1
```
上面的代码创建了一个空栈,然后依次将1、2、3三个元素入栈,最后按照先进后出的顺序出栈。
阅读全文