自定义结构类型为数据元素(DataType),分别完成顺序栈和链栈的相关操作(初始化,判断栈空,入栈,出栈,取栈顶元素,打印,清空栈等操作)
时间: 2024-10-11 11:15:11 浏览: 29
自定义结构类型`DataType`作为数据元素,用于创建顺序栈和链栈的数据结构,我们可以按照以下步骤来设计它们:
**顺序栈(基于数组):**
1. 初始化(例如,`StackArray(DataType)`):
- 创建一个固定大小的数组,并设置栈顶指针top为-1表示栈为空。
```python
class StackArray:
def __init__(self, capacity):
self.capacity = capacity
self.data = [None] * capacity
self.top = -1
```
2. 判断栈空(`is_empty()`):
- 检查栈顶是否等于-1。
```python
def is_empty(self):
return self.top == -1
```
3. 入栈(`push(item)`):
- 如果栈未满,将新元素放入data并增加top。
```python
def push(self, item):
if self.top < self.capacity - 1:
self.data[++self.top] = item
else:
print("Stack is full.")
```
4. 出栈(`pop()`):
- 若栈非空,则返回并移除栈顶元素,否则报错。
```python
def pop(self):
if not self.is_empty():
return self.data[self.top]
else:
print("Stack is empty.")
```
5. 取栈顶元素(`peek()`,类似出栈但不删除):
- 直接访问栈顶元素,无需检查堆栈是否为空。
```python
def peek(self):
if not self.is_empty():
return self.data[self.top]
else:
raise Exception("Stack is empty.")
```
6. 打印(遍历整个栈):
- 使用一个临时变量存储元素,从栈顶开始到栈底。
```python
def print_stack(self):
if self.is_empty():
print("Stack is empty.")
else:
for i in range(self.top, -1, -1):
print(self.data[i])
```
7. 清空栈(`clear()`):
- 将栈顶置为-1。
```python
def clear(self):
self.top = -1
```
**链栈(基于链表):**
1. 初始化(例如,`StackLinkedList(DataType)`):
- 创建一个节点类和链表头结点。
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class StackLinkedList:
def __init__(self):
self.top = None
```
...其他操作类似,但是需要通过修改节点连接来实现。
阅读全文