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

     
    #include<stdio.h>
    #include<stdlib.h>
    #define MAX  20
    typedef struct 
    {
        int stack[MAX];
        int top;
    }sqstack;
    void Initstack(sqstack *p)   /*初始化*/
    {
    if(!p)
        printf("error");
        p->top=-1; 
    }
    void Push(sqstack *p,int x)
    {
        if(p->top<MAX-1)
        {
            p->top=p->top+1;
            p->stack[p->top]=x;
        }
        else printf("overflow!
    ");
    }
    int Pop(sqstack *p)
    {
        int x;
        if(p->top!=0)
        {
            x=p->stack[p->top];
            printf("以前的栈顶元素%d已经被删除 !
    ",x);
            p->top=p->top-1;
            return x;
        }
       else
          {
              printf("underflow!
    ");
              return 0;
          }
      }
      int Gettop(sqstack *p)
      {
          int x;
          if(p->top!=0)
          {
              x=p->stack[p->top];
              return x;
          }
          else
          {
              printf("underflow
    ");
              return 0;
          }
      }
      void Outstack(sqstack *p)
      {
          int i;
          printf("
    ");
          if(p->top<0)
          {
              printf("这是一个空栈 !");
              printf("
    ");
           }
          else
            for(i=p->top;i>=0;i--)
               printf("第 %d 个数据元素是: %d
    ",i,p->stack[i]);
    
      }
      void Setempty(sqstack *p)
      {
         p->top=-1;
      }
       void main()
        {
            sqstack *q;
            int y,cord;
            int a;
            do
            {
                printf("
    ");
                printf("第一次使用必须初始化 !
    ");
                printf("
    ");
                printf("
                主菜单                
    ");
                printf("
          1    初始化顺序栈           
    ");
                printf("
          2    插入一个元素           
    ");
                printf("
          3    删除栈顶元素           
    ");
                printf("
          4    取栈顶元素             
    ");
                printf("
          5    置空顺序栈             
    ");
                printf("
          6    结束程序运行           
    ");
                printf("
    ----------------------------------
    ");
                printf("请输入您的选择 (1,2,3,4,5,6)");
                scanf("%d",&cord);
                printf("
    ");
                switch(cord)
                {
                    case 1:
                    {
                        q=(sqstack *)malloc(sizeof(sqstack));
                        Initstack(q);
                        Outstack(q);
                    }break;
                    case 2:
                    { 
                       printf("请输入要插入的数据元素 :a=");
                       scanf("%d",&a);
                       Push(q,a);
                       Outstack(q);
                    }break;
                    case 3:
                    {
                        Pop(q);
                        Outstack(q);
                    }
                    break;
                    case 4:
                    {
                        y=Gettop(q);
                        printf("
     栈顶元素为 : %d",y);
                        Outstack(q);
                    }break;
                    case 5:
                    {
                        Setempty(q);
                        printf("
    顺序栈被置空! 
    ");
                        Outstack(q);
                    }break;
                    case 6:
                    exit(0);
                }
             }while(cord<=6);
        }
  • 相关阅读:
    KINavigationController使用演示例子
    基于STC12C5A的MINI3216多功能点阵时钟
    Android开发SDK接入机智云,智能家居实现APP远程控制多设备
    自定义通用dialogFragment
    获取取并下载tuku的漫画的爬虫
    Mvp快速搭建商城购物车模块
    仿360手机助手下载按钮
    Pythond 读写HDF5文件
    python tricks —— datetime 删除日期中的前导 0
    天文网站
  • 原文地址:https://www.cnblogs.com/songxxu/p/3374093.html
Copyright © 2011-2022 走看看