使用c语言实现顺序栈要求能详细实现基本操作且附带注释
时间: 2024-06-06 15:09:05 浏览: 85
好的,让我来回答您的问题。
在 C 语言中实现顺序栈,需要进行以下基本操作:
1.初始化栈:创建一个数组用于存储栈中的元素,并设置栈顶指针为空。
// 定义栈结构体
typedef struct Stack {
int* data; // 存储栈元素的数组指针
int top; // 栈顶指针
int size; // 栈的容量
} Stack;
// 初始化栈
Stack* initStack(int size) {
Stack* s = (Stack*)malloc(sizeof(Stack));
s->data = (int*)malloc(sizeof(int) * size);
s->top = -1; // 栈顶指针为空
s->size = size; // 栈的容量为 size
return s;
}
2.入栈操作:将元素插入到栈顶,同时栈顶指针向上移动一位。
// 入栈操作
int push(Stack* s, int val) {
if (s->top == s->size - 1) { // 判断栈是否已满
return 0; // 入栈失败
}
s->top++; // 栈顶指针向上移动一位
s->data[s->top] = val; // 将元素插入到栈顶
return 1; // 入栈成功
}
3.出栈操作:将栈顶元素弹出,同时栈顶指针向下移动一位。
// 出栈操作
int pop(Stack* s) {
if (s->top == -1) { // 判断栈是否为空
return -1; // 出栈失败,返回 -1
}
int val = s->data[s->top]; // 取出栈顶元素
s->top--; // 栈顶指针向下移动一位
return val; // 返回出栈的元素
}
4.判空操作:判断栈是否为空。
// 判空操作
int isEmpty(Stack* s) {
return s->top == -1; // 如果栈顶指针为空,栈就为空
}
5.获取栈顶元素操作:返回栈顶元素的值。
// 获取栈顶元素操作
int getTop(Stack* s) {
if (s->top == -1) { // 判断栈是否为空
return -1; // 返回 -1
}
return s->data[s->top]; // 返回栈顶元素的值
}
以上是实现顺序栈的基本操作,您可以根据需要在此基础上进行扩展。希望这些代码对您有所帮助。
阅读全文