前言
栈的基本操作有1.初始化栈2.销毁栈3.判断栈是否为空4.进栈5.出栈6.取栈顶元素
首先定义好栈的数据类型
typedef int ElemType; typedef struct { ElemType data[MaxSize]; int
top; }SqStack;
一、初始化栈
void InitStack(SqStack*& s) {
s = (SqStack*)malloc(sizeof(SqStack));
s->top = -1;
}
二、销毁栈
//销毁栈
void DestoryStack(SqStack*& s) {
free(s);
}
三、判断栈是否为空
bool StackEmpty(SqStack* s) {
return (s->top == -1);
}
四、进栈
//元素进栈
bool push(SqStack*& s, ElemType e) {
if (s->top == MaxSize - 1) {//此时,top指针已经指向最高处了
return false;
}
else {
s->top++;
s->data[s->top] = e;
return true;
}
}
五、出栈
//元素出栈
bool pop(SqStack*& s, ElemType e) {
if (s->top == -1) {
return false;
}
else {
e = s->data[s->top];
s->top--;
return true;
}
}
六、取栈顶元素
//取栈顶元素
bool GetTop(SqStack* s, ElemType &e) {
if (s->top == -1) {
return false;
}
else {
e = s->data[s->top];
return true;
}
}//这里可以观察到,取栈顶元素与出栈是非常相似的,但栈顶元素不需要top--。```
总结
栈的基本操作需要自己不断的去敲代码熟悉,逐渐理解代码中的思维方式