- 👋 Hi, I’m @Beast Cheng
- 👀 I’m interested in photography, hiking, landscape…
- 🌱 I’m currently learning python, javascript, kotlin…
- 📫 How to reach me --> 458290771@qq.com
喜歡《數據結構》部分筆記的小伙伴可以訂閱專欄,今后還會不斷更新。🧑?💻
此外,《程序員必備技能》專欄和《程序員必備工具》專欄(該專欄暫未開設)日后會逐步更新,感興趣的小伙伴可以點一下訂閱、收藏、關注!🚀
謝謝大家!🙏
用順序存儲方式實現的棧
順序棧的定義
回顧順序存儲的定義[[2.2.1 順序表的定義#^28be66]]
#define MaxSize 10 //定義棧中元素的最大個數
typedef struct{ElemType data[MaxSize]; //靜態數組存放棧中元素int top; //棧頂指針
}SqStack;
基本操作
創(初始化)
void testStack(){SqStack S; //聲明一個順序棧(分配空間)//......
}
增(進棧)
bool Push(SqStack &S, ElemType x){if(S.top == MaxSize-1) //棧滿,報錯return false;S.top = S.top + 1; //指針先加 1S.data[S.top] = x; //新元素入棧return true;
}//入棧操作這兩句可以等價為:
S.data[++S.top] = x;
刪(出棧)
bool Pop(SqStack &S, ElemType &x){if(S.top == -1) //棧空,報錯return false;x = S.data[S.top]; //棧頂元素先出棧S.top = S.top - 1; //指針再-1return true;
}//和入棧操作類似,出棧操作這兩句可以等價為:
x = S.data[S.top--];
查(獲取棧頂元素)
x = S.data[S.top - 1];
判空、判滿
//判斷棧空
bool StackEmpty(SqStack S){if(S.top == -1) //棧空return true;else //不空return false;
}
另一種方式
#define MaxSize 10
typedef struct{ElemType data[MaxSize];//靜態數組存放棧中元素int top; //棧頂指針
}SqStack;//初始化棧
void InitStack(SqStack &S){S.top = 0; //初始化棧頂指針;
}void testStack(){SqStack S; //聲明一個順序棧(分配空間)InitStack(S);//…后續操作
}//判斷棧空
bool StackEmpty(SqStack S){if(S.top == 0)return true; //棧空elsereturn false; //不空
}
共享棧
#define MaxSize 10
typedef struct{ElemType data[MaxSize];//靜態數組存放棧中元素int top0; //0號棧棧頂指針int top1; //1號棧棧頂指針
}ShStack;//初始化棧
void InitStack(ShStack &S){S.top0 = -1; //初始化棧頂指針S.top1 = MaxSize;
}
判斷共享棧棧滿的條件:
top0 + 1 == top1