c语言建立链栈,依次进栈数据为 1,2,3,4,5,再全部出栈,输出出栈序列
时间: 2023-08-16 14:08:04 浏览: 62
下面是用 C 语言建立链栈,依次进栈数据为 1,2,3,4,5,再全部出栈,输出出栈序列的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈结构体
typedef struct StackNode {
int data;
struct StackNode *next;
} StackNode, *LinkStack;
// 初始化链栈
void InitStack(LinkStack *s) {
*s = NULL;
}
// 判断链栈是否为空
int StackIsEmpty(LinkStack s) {
return s == NULL;
}
// 进栈操作
void Push(LinkStack *s, int x) {
StackNode *p = (StackNode *)malloc(sizeof(StackNode));
p->data = x;
p->next = *s;
*s = p;
}
// 出栈操作
int Pop(LinkStack *s) {
if (StackIsEmpty(*s)) {
printf("栈为空,无法进行出栈操作!\n");
return -1;
}
StackNode *p = *s;
int x = p->data;
*s = p->next;
free(p);
return x;
}
int main() {
LinkStack s;
InitStack(&s);
int i;
// 依次进栈数据为 1,2,3,4,5
for (i = 1; i <= 5; i++) {
Push(&s, i);
}
// 全部出栈并输出出栈序列
printf("出栈序列为:");
while (!StackIsEmpty(s)) {
printf("%d ", Pop(&s));
}
printf("\n");
return 0;
}
```
程序输出为:
```
出栈序列为:5 4 3 2 1
```
说明链栈成功地实现了进栈、出栈操作,并输出了正确的出栈序列。