(1)初始化链式栈代码及运行截图: (2)入栈代码及运行截图: (3)出栈代码及运行截图: (4)取栈顶元素代码及运行截图: (5)销毁栈代码及运行截图:
时间: 2024-09-29 19:11:24 浏览: 40
链式栈是一种基于链表实现的数据结构,由于这里无法提供实际的代码和运行截图,我会用文字描述并举例说明如何编写相关的代码。
1. **初始化链式栈代码**:
```c++
class Node {
public:
int data;
Node* next;
};
Stack* createStack() {
Stack* stack = new Stack();
stack->top = nullptr;
return stack;
}
```
运行截图因文本环境而不可见,但这个函数会创建一个新的链式栈,并将其顶部指针设置为`nullptr`表示为空。
2. **入栈(入队操作)代码**:
```c++
void push(Stack* &stack, int value) {
Node* newNode = new Node{value};
newNode->next = stack->top;
stack->top = newNode;
}
```
运行截图同理,此操作会在栈顶添加新节点。
3. **出栈(出队操作)代码**:
```c++
int pop(Stack* &stack) {
if (stack->top == nullptr) {
throw std::runtime_error("Stack is empty");
}
int value = stack->top->data;
Node* temp = stack->top;
stack->top = stack->top->next;
delete temp;
return value;
}
```
运行截图显示的是返回了栈顶元素,并更新了栈顶指针。
4. **取栈顶元素代码**:
```c++
int peek(Stack* const stack) {
if (stack->top == nullptr) {
throw std::runtime_error("Stack is empty");
}
return stack->top->data;
}
```
运行截图展示了获取当前栈顶元素值,但不会修改栈。
5. **销毁栈代码**:
```c++
void destroyStack(Stack* &stack) {
while (stack->top != nullptr) {
Node* temp = stack->top;
stack->top = stack->top->next;
delete temp;
}
delete stack;
}
```
运行截图无直接可视化内容,但会删除所有栈中的元素并释放内存。
请注意以上代码片段需要在合适的上下文中实现,并确保正确处理异常情况。
阅读全文