栈的顺序存储(数组实现)

绝地灬酷狼 2022-12-04 07:50 223阅读 0赞

栈的定义

栈是只允许一一端进行操作的的线性表,首先强调的是栈是一种线性表,其次栈只限定在一端进行操作。

基本操作

initstack() 初始化栈
stackempty() 判断栈空
push() 进栈
pop() 出栈
gettop() 获取栈顶元素
destorystack() 销毁栈

顺序栈的实现

初始化

  1. typedef struct{
  2. int data[MAX];
  3. int top;
  4. }sqstack;
  5. //初始化
  6. void initStack(sqstack &S){
  7. S.top=-1;
  8. }

栈空

  1. bool isNull(sqstack &S){
  2. //或者stackEmpty()
  3. if(S.top == -1){
  4. return true;
  5. }
  6. else{
  7. return false;
  8. }
  9. }

进出栈

  1. //进
  2. bool push(sqstack &S,int x){
  3. if(S.top == MAX-1){
  4. return false;
  5. }
  6. S.data[++S.top] = x;
  7. return true;
  8. }
  9. //出
  10. bool pop(sqstack &S , int &x){
  11. if(S.top == -1){
  12. return false;
  13. }
  14. x = S.data[S.top--];
  15. return true;
  16. }

读顶部元素

  1. //读顶
  2. int GetTop(sqstack &S){
  3. if(S.top == -1){
  4. return false;
  5. }
  6. int ele = S.data[S.top];
  7. return ele;
  8. }

测试整合代码

  1. #include <iostream>
  2. #define MAX 100
  3. using namespace std;
  4. typedef struct{
  5. int data[MAX];
  6. int top;
  7. }sqstack;
  8. //初始化
  9. void initStack(sqstack &S){
  10. S.top=-1;
  11. }
  12. //判栈空
  13. bool isNull(sqstack &S){
  14. //或者stackEmpty()
  15. if(S.top == -1){
  16. return true;
  17. }
  18. else{
  19. return false;
  20. }
  21. }
  22. //进
  23. bool push(sqstack &S,int x){
  24. if(S.top == MAX-1){
  25. return false;
  26. }
  27. S.data[++S.top] = x;
  28. return true;
  29. }
  30. //出
  31. bool pop(sqstack &S , int &x){
  32. if(S.top == -1){
  33. return false;
  34. }
  35. x = S.data[S.top--];
  36. return true;
  37. }
  38. //读顶
  39. int GetTop(sqstack &S){
  40. if(S.top == -1){
  41. return false;
  42. }
  43. int ele = S.data[S.top];
  44. return ele;
  45. }
  46. int main (){
  47. sqstack Sta;
  48. initStack(Sta);
  49. if(isNull(Sta)){
  50. cout<<"栈空"<<endl;
  51. }
  52. push(Sta,23);
  53. GetTop(Sta);
  54. int record = 0;
  55. pop(Sta,record);
  56. cout << record<<endl;
  57. if(isNull(Sta)){
  58. cout<<"栈空"<<endl;
  59. }
  60. return 0;
  61. }

发表评论

表情:
评论列表 (有 0 条评论,223人围观)

还没有评论,来说两句吧...

相关阅读

    相关 顺序存储

    想起童年最喜欢做的事就是弹溜溜,经常和小伙伴们玩输赢的,你赢了给你,你输了给我,也喜欢把溜溜放进饮料瓶里,用清水进行清洗,但是每次将第一个溜溜放进瓶子里,但洗完后,往往最后一个