c语言 从键盘读入若干个整数,建一个顺序栈或链式栈,并完成下列操作,1.初始化栈2判断栈空3.出栈 4.入栈
时间: 2024-10-25 14:08:23 浏览: 24
在C语言中,我们可以使用链表来创建一个动态的链式栈(也称为LL(Linked List)栈),因为链表可以轻松地在需要的时候添加或删除元素。以下是基本的操作步骤:
1. **初始化栈**:
- 创建一个链表节点结构,包含一个整数值域和一个指向下一个节点的指针。
- 初始化一个链表头节点(head),其next指针设为NULL,表示栈为空。
```c
typedef struct Node {
int data;
struct Node* next;
} StackNode;
StackNode* stack = NULL; // 初始化链式栈
```
2. **判断栈空**:
判断栈是否为空通常检查头节点的next指针是否为NULL。
```c
bool is_empty() {
return stack == NULL;
}
```
3. **出栈** (Pop):
如果栈非空,弹出栈顶元素并返回它。将头节点的next指针移动到当前头节点的下一个节点。
```c
int pop() {
if (is_empty()) return -1; // 返回错误代码或特定值表示空栈
StackNode* temp = stack;
stack = stack->next;
int top_value = temp->data;
free(temp); // 释放栈顶节点内存
return top_value;
}
```
4. **入栈** (Push):
将新输入的整数插入到链表头部,增加新的栈顶节点。
```c
void push(int value) {
StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));
newNode->data = value;
newNode->next = stack;
stack = newNode;
}
```
注意,这个例子假设堆内存管理,实际编程时可能还需要考虑内存泄漏的问题。此外,如果要使用顺序栈(数组实现),则需调整相应的操作逻辑。
阅读全文