用c语言使用链栈完成进栈和出栈
时间: 2024-02-15 13:05:47 浏览: 35
好的,以下是使用链栈实现进栈和出栈的C语言代码,希望能帮到您:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈节点结构体
typedef struct Node {
int data;
struct Node *next;
} Node;
// 定义链栈结构体
typedef struct Stack {
Node *top; // 栈顶指针
} Stack;
// 初始化链栈
Stack* initStack() {
Stack *s = (Stack*)malloc(sizeof(Stack));
s->top = NULL;
return s;
}
// 判断链栈是否为空
int isEmpty(Stack *s) {
return s->top == NULL;
}
// 进栈
void push(Stack *s, int data) {
Node *node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = s->top;
s->top = node;
}
// 出栈
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty.\n");
return -1;
}
Node *node = s->top;
int data = node->data;
s->top = node->next;
free(node);
return data;
}
int main() {
// 初始化链栈
Stack *s = initStack();
// 进栈
push(s, 1);
push(s, 2);
push(s, 3);
// 出栈
printf("%d\n", pop(s));
printf("%d\n", pop(s));
printf("%d\n", pop(s));
return 0;
}
```
以上是一个简单的链栈示例,可以在其中添加更多的操作,如获取栈顶元素等,以满足您的需求。