怎么用c语言写两个顺序栈S1, S2的大小分别为Max1、Max2
时间: 2024-02-23 13:58:43 浏览: 82
用c语言来实现顺序栈
5星 · 资源好评率100%
下面是用 C 语言实现两个顺序栈 S1 和 S2,它们的最大容量分别为 Max1 和 Max2:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义栈结构体
typedef struct {
int *data; // 栈数据
int top; // 栈顶指针
int size; // 栈大小
} Stack;
// 初始化栈
void init(Stack *s, int size) {
s->data = (int*)malloc(sizeof(int) * size);
s->top = -1;
s->size = size;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int isFull(Stack *s) {
return s->top == s->size - 1;
}
// 入栈
void push(Stack *s, int value) {
if (isFull(s)) {
printf("Stack is full, push failed.\n");
return;
}
s->data[++s->top] = value;
}
// 出栈
int pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty, pop failed.\n");
return -1;
}
return s->data[s->top--];
}
int main() {
int Max1 = 10; // S1 的最大容量为 10
int Max2 = 20; // S2 的最大容量为 20
Stack S1, S2;
init(&S1, Max1);
init(&S2, Max2);
// 对 S1 和 S2 进行入栈和出栈操作
push(&S1, 1);
push(&S1, 2);
push(&S2, 3);
pop(&S1);
pop(&S2);
// 释放内存
free(S1.data);
free(S2.data);
return 0;
}
```
上面的代码中,我们定义了一个 `Stack` 结构体,包含了栈的数据、栈顶指针和栈的大小。然后,我们通过 `init` 函数初始化栈,通过 `push` 和 `pop` 函数实现入栈和出栈操作。最后,我们在 `main` 函数中创建了两个顺序栈 S1 和 S2,并对它们进行了一些操作。
阅读全文