请用顺序存储实现栈的数据结构Stack,你所实现的栈应包括pop,push,top,size,clear,full等功能。利用你的栈实现逆序输出
时间: 2023-03-29 14:04:42 浏览: 114
可以回答这个问题。以下是顺序存储实现栈的代码:
#define MAXSIZE 100 // 栈的最大容量
typedef struct {
int data[MAXSIZE]; // 存储数据的数组
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int isFull(Stack *s) {
return s->top == MAXSIZE - 1;
}
// 入栈
void push(Stack *s, int x) {
if (isFull(s)) {
printf("栈已满,无法入栈\n");
return;
}
s->top++;
s->data[s->top] = x;
}
// 出栈
int pop(Stack *s) {
if (isEmpty(s)) {
printf("栈为空,无法出栈\n");
return -1;
}
int x = s->data[s->top];
s->top--;
return x;
}
// 获取栈顶元素
int top(Stack *s) {
if (isEmpty(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;
}
// 利用栈实现逆序输出
void reversePrint(Stack *s) {
while (!isEmpty(s)) {
printf("%d ", pop(s));
}
}
使用以上代码可以实现栈的基本功能,并且可以利用栈实现逆序输出。
阅读全文