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);
        }
  • 相关阅读:
    处理流之转换流
    处理流之缓冲流 buffered
    java学习笔记 字符流Reader与Writer
    java学习笔记 OutputStream与InputStream
    java学习笔记 Map接口
    java 学习笔记 Iterator 迭代器
    java学习笔记 genenic 范形
    应急响应介绍
    安全之红蓝对抗简介
    密码学基础下篇
  • 原文地址:https://www.cnblogs.com/songxxu/p/3374093.html
Copyright © 2011-2022 走看看