顺序栈

来源:互联网 发布:网络精准投放 编辑:程序博客网 时间:2024/06/14 17:02
#include<stdio.h>#define maxsize 6                           /*顺序栈的容量*/typedef struct{    int data[maxsize];                      /*存储栈中数据元素*/    int top;                                /*标志栈顶位置*/}SeqStk;int InitStack(SeqStk *stk){    stk->top=0;    return 1;}int EmptyStack(SeqStk *stk)/*若栈为空,则返回值1,否则返回0.*/{    if(stk->top==0)        return 1;    else        return 0;}int Push(SeqStk *stk,int x)/*若栈未满,元素x进栈stk中,否则提示出错信息。*/{   if(stk->top==maxsize-1)                      /*判断栈是否满*/   {       printf("栈满\n");       return 0;   }   else   {       stk->top++;                              /*栈未满,top值加1.*/       stk->data[stk->top]=x;                   /*元素x进栈*/       return 1;   }}int Pop(SeqStk *stk){    if(EmptyStack(stk))                         /*判断是否下溢(栈空)*/    {        printf("下溢\n");        return 0;    }    else                                        /*未下溢,栈顶元素出栈。*/    {        stk->top--;                             /*top值减1*/        return 1;    }}int GetTop(SeqStk *stk)/*取栈顶数据元素,栈顶数据元素通过参数返回。*/{    if(EmptyStack(stk))        printf("栈空\n");                        /*栈空,返回NULLData.*/    else        return stk->data[stk->top];             /*返回栈顶数据元素*/}main(){    SeqStk stk;    int i,x;    printf("------创建栈------\n");    InitStack(&stk);    for(i=1;i<maxsize;i++)    {        printf("输入第%d个元素:\n",i);        scanf("%d",&x);        Push(&stk,x);    }    printf("------输出栈------\n");    while(!EmptyStack(&stk))    {        x=GetTop(&stk);        Pop(&stk);        printf("%d\t",x);    }}
原创粉丝点击