从终端输入一组数据进行进栈、出栈操作并将其结果打印出来(采用顺序栈的方式)

来源:互联网 发布:流行网络语 编辑:程序博客网 时间:2024/05/01 19:31

利用栈的基本知识进行简单程序的编程,从终端输入数据经压栈、出栈操作。最后将其列印出来。 

 

#include<stdio.h>
#define MaxSize 10
typedef int BOOL;
typedef  struct stack{
         int Top,MaxStack;
         int  Element[MaxSize];
        }Stack;
void Creat_Stack(Stack *p,int m)
            {
             p->Top=0;
             p->MaxStack=m;
            }
     BOOL  Is_Empty(Stack *p)
            {
             return p->Top<1;
             }
     BOOL  Is_Full(Stack *p)
             {
              return p->Top>=MaxSize;
             }
   void    Push(Stack *p,int x)
             {
              if(Is_Full(p))
                 printf("Overflow/n");
         else
            p->Element[++p->Top]=x;                                      //注意这里要先将指针进一,后在将值赋给新的地址位置         
            
            
              }
   void   Pop(Stack *p)
            {
              if(Is_Empty(p))
                printf("underflow/n");
              else
                  p->Top--;                                                   //指针倒退一个
            }

   void PrintStack(Stack *p)
           {
             if(Is_Empty(p))
             printf("/nIs Empty!/n/n");
             else
             {
              printf("%d, ",p->Element[p->Top--]);                          //打印出元素,同时将指针后退一个位置
                PrintStack(p);
             }
           }

   void main()
           {
            Stack s;          
            int i,n;           
            int a[MaxSize];
     Creat_Stack(&s,MaxSize);              /*Construction of a capacity for MaxSize air for stack*/
            printf("please put into number element:/n");
            scanf("%d",&n);                                                        //输入你想从终端输入几个数据进栈
            for(i=0;i<n;i=i++)
               {
                scanf("%ld",a+i);                                                 //从终端输入数据
               }               
           for(i=0;i<n;i++)
                  {                  
                     Push(&s,a[i]);                                              //压栈     

                     printf("%d,",a[i]);
                   }  
    printf("/n/n");
           Pop(&s);                                                            //出栈
           Pop(&s);                                       
    PrintStack(&s);                                                         //列印
         }

编译运行,结果正确!

结果如下:

please  put into number element:

5        回车

9

8

7

6

5      

 回车

9,8,7,6,5,

 

7,8,9

is empty!