帮我用c++实现顺序栈
时间: 2023-03-25 15:02:24 浏览: 123
好的,我可以回答这个问题。以下是用 C 语言实现顺序栈的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义栈的最大容量
typedef struct {
int data[MAXSIZE]; // 存储栈中元素的数组
int top; // 栈顶指针
} SqStack;
// 初始化栈
void InitStack(SqStack *s) {
s->top = -1;
}
// 判断栈是否为空
int IsEmpty(SqStack *s) {
return s->top == -1;
}
// 判断栈是否已满
int IsFull(SqStack *s) {
return s->top == MAXSIZE - 1;
}
// 入栈操作
int Push(SqStack *s, int x) {
if (IsFull(s)) {
printf("栈已满,无法入栈!\n");
return ;
}
s->top++;
s->data[s->top] = x;
return 1;
}
// 出栈操作
int Pop(SqStack *s, int *x) {
if (IsEmpty(s)) {
printf("栈为空,无法出栈!\n");
return ;
}
*x = s->data[s->top];
s->top--;
return 1;
}
// 获取栈顶元素
int GetTop(SqStack *s, int *x) {
if (IsEmpty(s)) {
printf("栈为空,无法获取栈顶元素!\n");
return ;
}
*x = s->data[s->top];
return 1;
}
int main() {
SqStack s;
int x;
InitStack(&s);
Push(&s, 1);
Push(&s, 2);
Push(&s, 3);
Pop(&s, &x);
printf("出栈元素为:%d\n", x);
GetTop(&s, &x);
printf("栈顶元素为:%d\n", x);
return ;
}
阅读全文