zoukankan      html  css  js  c++  java
  • 数据结构->栈->顺序栈ADT代码

    顺序栈基于数组的数据结构,故在定义栈的数据结构中,关键是top(栈顶的变化过程),值得注意的一点是top的取值是-1,以及malloc的用法。

    一下是基于C语言的代码,运行环境为VS2017。

      1 //顺序栈
      2 #include<stdio.h>
      3 #include<malloc.h>
      4 #define stackSize 10
      5 
      6 //栈的数据结构(用数组实现)
      7 typedef struct
      8 {
      9     int top;
     10     int size;
     11     int data[stackSize];
     12 }stack,*sqStack;
     13 
     14 //建立新栈
     15 sqStack Create()
     16 {
     17     sqStack S=(stack *)malloc(stackSize * sizeof(stack));
     18     S->size = stackSize;
     19     S->top = -1;
     20     printf("成功建立一个长度为%d的栈
    ",stackSize);
     21     return S;
     22 }
     23 
     24 //判断栈空满并返回栈中元素个数
     25 int IsFull(sqStack S)
     26 {
     27     if (S->top == -1)
     28     {
     29         printf("栈已空
    ");
     30         return false;
     31     }
     32     else
     33     {
     34         if (S->top == (S->size - 1))
     35         {
     36             printf("栈已满
    ");
     37             return true;
     38         }
     39         else
     40         {
     41             printf("栈中有%d个元素
    ",S->top+1);
     42         }
     43     }
     44 }
     45 
     46 //入栈
     47 int InStack(sqStack S,int P)
     48 {
     49     if (S->top == (S->size - 1))
     50     {
     51         printf("栈已满,出栈后再执行操作
    ");
     52     }
     53     else
     54     {
     55         printf("请输入入栈元素");
     56         scanf_s("%d", &P);
     57         S->top = S->top + 1;
     58         S->data[S->top] = P;
     59         printf("成功入栈,入栈元素为%d
    ", S->data[S->top]);
     60         return P;
     61     }
     62 };
     63 
     64 //出栈
     65 int OutStack(sqStack S)
     66 {
     67     if (S->top == -1)
     68     {
     69         printf("栈已空,入栈后再执行操作
    ");
     70     }
     71     else
     72     {
     73         printf("出栈成功,出栈元素为%d
    ", S->data[S->top--]);
     74     }
     75     return S->top + 1; 
     76 }
     77 
     78 //查看栈顶元素
     79 int VistStack(sqStack S)
     80 {
     81     if (S->top == -1)
     82     {
     83         printf("栈已空,入栈后再执行操作
    ");
     84     }
     85     else
     86     {
     87         printf("栈顶元素为%d", S->data[S->top]);
     88         return S->data[S->top];
     89     }
     90 }
     91 
     92 //打印栈
     93 void Printstack(sqStack S) 
     94 {
     95     int i = 0;
     96     printf("栈底|");
     97     for (i = 0; i <= S->top; i++)
     98     {
     99         printf("%d  ", S->data[i]);
    100     }
    101     printf("<-栈顶");
    102 }
    103 
    104 //主函数
    105 void main()
    106 {
    107     int i;
    108     stack S;
    109     sqStack Sq;
    110     Sq = &S; //Sq的初始化
    111     do
    112     {
    113         printf("
    ------------****------------
    ");
    114         printf("请输入要执行的操作序号
    ");
    115         printf("1.建立空栈
    ");
    116         printf("2.入栈
    ");
    117         printf("3.出栈
    ");
    118         printf("4.查看栈顶元素
    ");
    119         printf("5.打印栈
    ");
    120         printf("6.判断栈空/满
    ");
    121         printf("0.退出");
    122         printf("
    ------------****------------
    ");
    123         printf("请输入序号:");
    124         scanf_s("%d", &i);
    125         printf("
    ");
    126         switch (i)
    127         {
    128             case 1: Sq=Create(); break;
    129             case 2:InStack(Sq,i); break;//i为任意的整数,为了节省空间故用i代替
    130             case 3:OutStack(Sq); break;
    131             case 4:VistStack(Sq);break;
    132             case 5:Printstack(Sq); break;
    133             case 6:IsFull(Sq); break;
    134             case 0:printf("结束"); break;
    135             default:printf("输入错误!请输入0---6的整数");
    136 
    137         }
    138     } while (i != 0);
    139     getchar();
    140 }
  • 相关阅读:
    排序算法-简单选择排序
    pygame模块的简介
    python设计模式之工厂模式
    一次完整的HTTP请求流程(当我们在浏览器输入一个URL后,发生了什么)
    HTTP协议,TCP、UDP协议
    Django rest framework框架中有哪些组件
    flask
    Flask上下文管理
    mac如何开启两个vmware虚拟机
    HTTP状态码
  • 原文地址:https://www.cnblogs.com/JQbiu/p/10107528.html
Copyright © 2011-2022 走看看