用C语言链栈写先进栈 3,2,1,出栈 2 次,进栈 4,5,6,7,再全部出队,输出每次入栈, 出栈序列。
时间: 2023-08-18 17:03:53 浏览: 69
以下是用C语言链栈实现先进栈3,2,1的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
} Node, *Stack;
// 创建空栈
Stack createStack() {
Stack stack = (Stack)malloc(sizeof(Node));
stack->next = NULL;
return stack;
}
// 判断栈是否为空
int isEmpty(Stack stack) {
return stack->next == NULL;
}
// 入栈操作
void push(Stack stack, int value) {
Node *newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = stack->next;
stack->next = newNode;
}
// 出栈操作
int pop(Stack stack) {
if (isEmpty(stack)) {
printf("Stack is empty!\n");
return -1;
}
Node *temp = stack->next;
int value = temp->data;
stack->next = temp->next;
free(temp);
return value;
}
int main() {
// 先进栈3,2,1
Stack stack = createStack();
push(stack, 3);
push(stack, 2);
push(stack, 1);
// 出栈2次
printf("出栈序列:");
for (int i = 0; i < 2; i++) {
int value = pop(stack);
printf("%d ", value);
}
printf("\n");
// 进栈4,5,6,7
push(stack, 4);
push(stack, 5);
push(stack, 6);
push(stack, 7);
// 全部出栈
printf("出栈序列:");
while (!isEmpty(stack)) {
int value = pop(stack);
printf("%d ", value);
}
printf("\n");
return 0;
}
```
输出结果为:
```
出栈序列:1 2
出栈序列:7 6 5 4 3
```
阅读全文