C语言使用链栈,让元素1,2,3,4,5依次进栈,按2,3,5,4,1依次出栈
时间: 2024-11-13 08:21:48 浏览: 3
C语言进制装换,栈的入栈出栈
在C语言中,使用链栈(也称为链表栈)实现元素的进出操作,通常需要定义一个链表节点结构以及两个指针,一个指向栈顶元素,另一个用于遍历链表。这里是一个简单的步骤描述:
1. **创建链栈结构**:
- 定义一个链表节点结构,包含数据域和指向下一个节点的指针。
- 创建一个链表头节点`top`,并初始化为`NULL`。
2. **入栈(push)**:
- 当有新元素(如1,2,3,4,5)需要入栈时,先创建一个新的节点,存储该元素。
- 新节点的next指向前一个栈顶元素,然后将`top`指向新的节点,完成入栈。
```c
typedef struct Node {
int data;
struct Node* next;
} StackNode;
StackNode* top = NULL; // 初始化栈顶为空
```
3. **出栈(pop)**:
- 如果栈非空,遍历链表找到栈顶元素(当前指向`top`),并将`top`移动到下一个节点。
- 将出栈元素打印出来,并更新链表的`top`指针。
- 如果遍历完整个链表仍然没有元素,则表示栈已空,此时返回`NULL`或抛出异常。
```c
void push(int value) {
StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));
newNode->data = value;
newNode->next = top;
top = newNode;
}
int pop() {
if(top == NULL) {
printf("Stack is empty!\n");
return -1; // 或者抛出异常
}
int poppedValue = top->data;
StackNode* temp = top;
top = top->next;
free(temp);
return poppedValue;
}
```
按照上述顺序操作,元素1,2,3,4,5依次入栈后,出栈的顺序将是2,3,5,4,1,因为每次出栈都是从栈顶开始取元素的。
阅读全文