用C语言实现带头结点的链式栈的初始化操作InitStack( )方法,初始化链栈;实现销毁操作DestroyStack( )方法,销毁链栈
时间: 2024-12-17 15:43:44 浏览: 4
在 C 语言中,带头结点的链式栈的初始化 `InitStack()` 和销毁 `DestroyStack()` 方法可以这样设计:
### 初始化链式栈(InitStack())
```c
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
} StackNode;
// 初始化链式栈
void InitStack(StackNode** stack) {
*stack = (StackNode*)malloc(sizeof(StackNode)); // 分配空间给堆顶
(*stack)->data = 0; // 堆顶节点设为初始值,通常是0或者NULL
(*stack)->next = NULL; // 初始化下一个指针为NULL,表示栈为空
}
```
在这个函数中,我们创建一个新的栈,分配内存给栈顶节点,并设置其为初始状态。
### 销毁链式栈(DestroyStack())
```c
void DestroyStack(StackNode** stack) {
if (*stack != NULL) { // 只有当栈非空时才执行销毁操作
StackNode* current = *stack; // 初始化迭代器
while (current != NULL) {
StackNode* temp = current; // 保存当前节点
current = current->next; // 移动到下一个节点
free(temp); // 释放当前节点内存
}
*stack = NULL; // 清理头指针,表示栈已经销毁
}
}
```
这个 `DestroyStack` 函数遍历整个栈,逐个释放每个节点的内存,最后将头指针置为 `NULL`,表示栈已经被完全销毁。
阅读全文