c语言建立链栈,实现数据依次进栈,再全部出栈,输出出栈序列
时间: 2023-10-31 11:06:16 浏览: 110
下面是C语言实现链栈的代码,包括数据依次进栈和全部出栈:
```c
#include <stdio.h>
#include <stdlib.h>
// 链栈结点结构体定义
typedef struct StackNode {
int data;
struct StackNode *next;
} StackNode;
// 链栈结构体定义
typedef struct {
StackNode *top; // 栈顶指针
} LinkStack;
// 初始化链栈
void InitStack(LinkStack *S) {
S->top = NULL;
}
// 判断链栈是否为空
int IsEmpty(LinkStack *S) {
return (S->top == NULL);
}
// 进栈
void Push(LinkStack *S, int x) {
StackNode *p = (StackNode *)malloc(sizeof(StackNode));
p->data = x;
p->next = S->top;
S->top = p;
}
// 出栈
int Pop(LinkStack *S) {
if (IsEmpty(S)) {
printf("Stack is empty.\n");
return -1;
}
int x = S->top->data;
StackNode *p = S->top;
S->top = S->top->next;
free(p);
return x;
}
// 输出出栈序列
void PrintStack(LinkStack *S) {
while (!IsEmpty(S)) {
printf("%d ", Pop(S));
}
printf("\n");
}
int main() {
// 初始化链栈
LinkStack S;
InitStack(&S);
// 数据依次进栈
Push(&S, 1);
Push(&S, 2);
Push(&S, 3);
Push(&S, 4);
// 全部出栈,输出出栈序列
PrintStack(&S);
return 0;
}
```
运行结果:
```
4 3 2 1
```
阅读全文