利用C语言实现链栈: (1)初始化栈。 (2)取出栈顶元素。 (3)出栈。 (4)入栈。
时间: 2024-10-21 19:08:42 浏览: 26
c语言实现链栈初始化清空销毁入栈出栈
5星 · 资源好评率100%
在C语言中,我们可以使用动态内存分配和结构体来实现一个简单的链式栈(也称为链表栈)。这里是一个基本的步骤描述:
1. **初始化栈**:
首先,我们需要定义一个链栈节点结构体,包含一个数据域和一个指向下一个节点的指针。初始化链栈时,创建一个头节点(通常设置为空),表示栈为空。
```c
typedef struct Node {
int data;
struct Node* next;
} StackNode;
StackNode* stack = NULL; // 初始化为空链表
```
2. **取出栈顶元素** (peek 或 top) :
如果栈非空,则返回栈顶元素,但不删除它。若为空则返回错误提示。
```c
int getTop(StackNode* head) {
if (head == NULL) {
return -1; // 或者抛出错误
}
return head->data;
}
```
3. **出栈** (pop):
删除并返回栈顶元素,然后更新头节点的指针。
```c
void pop(StackNode** head) {
if (*head == NULL) {
return;
}
int topValue = (*head)->data;
StackNode* temp = *head;
*head = (*head)->next;
free(temp); // 释放已处理的节点内存
}
```
4. **入栈** (push):
将新元素添加到栈顶,新建节点并将其插入到头节点之后。
```c
void push(StackNode** head, int value) {
StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
```
阅读全文