• 数据结构期末复习(いち)--顺序栈定义及使用


      1 #include <iostream>
      2 using namespace std;
      3 #define MAXSIZE 100  //顺序栈存储空间初始分配大小
      4 #define OK 1
      5 #define ERROR 0
      6 #define OVERFLOW -1
      7 typedef struct //顺序栈结构定义
      8 {
      9     int *base;  //栈底指针
     10     int *top;    //栈顶指针
     11     int stacksize;  //栈可使用的最大容量
     12 } Sqstack;
     13 
     14 //初始化,构造一个空栈
     15 int Init_Stack(Sqstack &s)
     16 {
     17     s.base = new int[MAXSIZE]; //为顺序栈动态分配一个最大容量为MAXSIZE的数组空间
     18     if(!s.base)    exit(-1);  //分配失败则退出
     19     s.top = s.base;        //top初始为base,表栈空
     20     s.stacksize = MAXSIZE;
     21     return 0;
     22 }
     23 
     24 //入栈操作
     25 int Push_Stack(Sqstack &s, int e)
     26 {
     27     if(s.top - s.base == s.stacksize)    //栈满退出
     28         return 1;
     29     *s.top++ = e; //将元素e压入栈顶,同时栈顶指针加1
     30     //等同于*s.top=e;s.top++;
     31     return 0;
     32 }
     33 
     34 //出栈操作
     35 int Pop_Stack(Sqstack &s)
     36 {
     37     if(s.top == s.base)    return 1; //栈空
     38     --s.top;    //栈顶指针减1
     39     return 0;
     40 }
     41 
     42 //取栈顶元素
     43 int Get_Top(Sqstack s)
     44 {
     45     if(s.top != s.base) //栈非空
     46         return *(s.top - 1); //栈顶指针不变,返回栈顶元素的值
     47 }
     48 
     49 //输出栈
     50 void printstack(Sqstack s)
     51 {
     52     while((s.top != s.base))   //栈非空
     53     {
     54         cout << Get_Top(s) << " ";
     55         Pop_Stack(s);
     56     }
     57     cout << endl;
     58 }
     59 
     60 int main()
     61 {
     62     Sqstack s;
     63     Init_Stack(s);
     64     for (int i = 0; i < 10; ++i)
     65     {
     66         Push_Stack(s, i);
     67     }
     68     int a, b;
     69     cout << "1--print,2--pop,3--push,0--exit
    ";
     70     for(int i = 0; i < 4; ++i)
     71     {
     72         cin >> a;
     73         if (a == 1)
     74         {
     75             printstack(s);
     76         }
     77         else if (a == 3)
     78         {
     79             cout << "元栈为:";
     80             printstack(s);
     81             cout << "请输入要插入的数:";
     82             cin >> b;
     83             Push_Stack(s, b);
     84             cout << "插入后栈为:";
     85             printstack(s);
     86         }
     87         else if (a == 2)
     88         {
     89             cout << "元栈为:";
     90             printstack(s);
     91             //cout<<"请输入要插入的数:";
     92             //cin>>b;
     93             Pop_Stack(s);
     94             cout << "pop后栈为:";
     95             printstack(s);
     96         }
     97         else if (a == 0)
     98         {
     99             return 0;
    100         }
    101     }
    102     return 0;
    103 }
  • 相关阅读:
    maven下载出错
    Android中TextView和EditView常用属性设置
    在python3.6环境下使用cxfreeze打包程序
    Python安装环境配置和多版本共存
    python manage.py migrate出错
    python使用pip安装模块出错 Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None))
    类的继承
    显示一张大图两张小图思路!banner数据库设计
    微信模板
    微擎小程序第二次请求 promise
  • 原文地址:https://www.cnblogs.com/DSYR/p/9162601.html
Copyright © 2020-2023  润新知