c语言建立链栈实现先进栈 3,2,1,出栈 2 次,进栈 4,5,6,7,再全部出队,输出每次入栈, 出栈序列。
时间: 2023-08-18 10:03:53 浏览: 78
C语言创建一个栈+入栈+出栈
以下是基于 C 语言的链栈实现代码,实现了先进栈 3, 2, 1,出栈 2 次,进栈 4, 5, 6, 7,再全部出栈,输出每次入栈,出栈序列的功能。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈结构体
struct node {
int data;
struct node *next;
};
// 初始化链栈
void initStack(struct node **top) {
*top = NULL;
}
// 判断链栈是否为空
int isEmpty(struct node *top) {
return top == NULL;
}
// 入栈操作
void push(struct node **top, int data) {
struct node *newNode = (struct node *)malloc(sizeof(struct node));
newNode->data = data;
newNode->next = *top;
*top = newNode;
}
// 出栈操作
int pop(struct node **top) {
if (isEmpty(*top)) {
printf("栈已空,无法出栈!\n");
return -1;
} else {
int data = (*top)->data;
struct node *temp = *top;
*top = (*top)->next;
free(temp);
return data;
}
}
// 打印栈中元素
void printStack(struct node *top) {
printf("当前栈中元素为:");
while (top != NULL) {
printf("%d ", top->data);
top = top->next;
}
printf("\n");
}
// 主函数
int main() {
struct node *top;
initStack(&top);
// 先进栈 3, 2, 1
push(&top, 3);
push(&top, 2);
push(&top, 1);
// 出栈 2 次
printf("出栈元素为:%d\n", pop(&top));
printf("出栈元素为:%d\n", pop(&top));
// 进栈 4, 5, 6, 7
push(&top, 4);
push(&top, 5);
push(&top, 6);
push(&top, 7);
// 打印栈中元素
printStack(top);
// 全部出栈并输出
printf("出栈元素序列为:");
while (!isEmpty(top)) {
printf("%d ", pop(&top));
}
printf("\n");
return 0;
}
```
运行结果:
```
出栈元素为:2
出栈元素为:1
当前栈中元素为:3 4 5 6 7
出栈元素序列为:7 6 5 4 3
```
阅读全文