建立链栈,并在链栈上实现入栈和出栈操作c语言
时间: 2024-02-03 14:14:12 浏览: 85
c语言实现链栈操作
以下是链栈的结构体定义和入栈、出栈操作的实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈的结构体
struct Node {
int data;
struct Node* next;
};
struct Node* top = NULL;
// 入栈操作
void push(int x) {
struct Node* newnode = (struct Node*) malloc(sizeof(struct Node));
newnode->data = x;
newnode->next = top;
top = newnode;
}
// 出栈操作
void pop() {
if (top == NULL) {
printf("栈为空,无法出栈。\n");
return;
}
struct Node* temp = top;
top = top->next;
free(temp);
}
int main() {
// 测试代码
push(1);
push(2);
push(3);
pop();
push(4);
pop();
pop();
pop();
pop();
return 0;
}
```
在上面的代码中,我们使用了一个指向栈顶的全局指针 `top` 来表示链栈,当栈为空时 `top` 的值为 `NULL`。入栈操作实现时,我们首先创建一个新的节点 `newnode`,然后将其指针域指向当前的栈顶节点,最后更新 `top` 的值为 `newnode`。出栈操作实现时,我们需要先判断栈是否为空,如果为空则输出错误信息并返回,否则将 `top` 指向下一个节点,释放当前节点的内存。最后,我们编写了一些测试代码来验证我们的链栈实现是否正确。
阅读全文