请用顺序存储实现栈的数据结构Stack。你所实现的栈应包括:pop,push,top,size,clear,full等功能。利用你实现的Stack实现输入数字的逆序输出。
时间: 2023-03-29 09:04:26 浏览: 62
可以回答这个问题。以下是用顺序存储实现栈的数据结构Stack的代码:
```
#define MAX_SIZE 100 // 栈的最大容量
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈
void push(Stack *s, int x) {
if (is_full(s)) {
printf("栈已满\n");
return;
}
s->top++;
s->data[s->top] = x;
}
// 出栈
int pop(Stack *s) {
if (is_empty(s)) {
printf("栈已空\n");
return -1;
}
int x = s->data[s->top];
s->top--;
return x;
}
// 取栈顶元素
int top(Stack *s) {
if (is_empty(s)) {
printf("栈已空\n");
return -1;
}
return s->data[s->top];
}
// 获取栈的大小
int size(Stack *s) {
return s->top + 1;
}
// 清空栈
void clear(Stack *s) {
s->top = -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 利用栈实现输入数字的逆序输出
void reverse_output() {
Stack s;
init(&s);
int x;
printf("请输入数字,以结束:\n");
scanf("%d", &x);
while (x != ) {
push(&s, x);
scanf("%d", &x);
}
printf("逆序输出:");
while (!is_empty(&s)) {
printf("%d ", pop(&s));
}
printf("\n");
}
```
使用上述代码实现输入数字的逆序输出,只需要调用reverse_output()函数即可。