栈的函数

#if 0

        栈的所有基本函数。    既然写了链表,那就干脆把严蔚敏C语言数据结构里的函数都写光吧,不过得慢慢积累起来,呵呵,有头有尾看起来舒服一点,

#endif

#include

#include

#define type int

#define status int

#define MAX_SIZE 10

#define OK 0

#define ERROR 1

typedef struct{

        type *base;

        type *top;

        int stack_size;

}stack;

status InitStack( stack &s )

{

       s.base = ( type * )malloc(MAX_SIZE * sizeof(type));

       s.top = s.base;

       s.stack_size = 0;

       return OK;

}

status DestroyStack( stack &s )

{

       s.stack_size = 0;

       s.top = s.base;

       free(s.base);

       return OK;

}

status ClearStack( stack &s )

{

       s.top = s.base;

       s.stack_size = 0;

       return OK;

}

status StackEmpty( stack s )

{

       if( s.stack_size == 0 )   return 1;

       else return 0;

}

status StackLength( stack s )

{

       return s.stack_size;

}

status GetTop( stack s, type &e )

{      

     if( s.top == s.base )  return ERROR;  

     e = *(--s.top);

     -- s.stack_size;

       return OK;

}

status Push( stack &s, type e )

{

       if( s.stack_size >= MAX_SIZE )   

       { return ERROR; }

       *(s.top++) = e;

       ++ s.stack_size;

       return OK;

}

status Pop( stack &s, type &e )

{

       if( s.stack_size == 0 )  

       { return ERROR; }

       e = *(--s.top);

       -- s.stack_size;

       return OK;

}

void PrintStack( stack s )

{

     type *p;

     p = -- s.top;

     while( p >= s.base ) 

     {

                        printf("%d ", *p-- );

     }

     printf("   end\n");

}

int main()

{

    int i;

    type e;

    stack s;

    InitStack( s );

    for(i=0; i

    {

             Push( s, i );

    }

    PrintStack( s );

//    Pop( s, e );    printf("Pop NO. is %d\n", e );

//    GetTop( s, e );   printf("GetTop NO. is %d\n", e);

//    DestroyStack( s );

//    ClearStack( s );

//    printf("Empty is ''1'': return = %d\n",StackEmpty( s ));

//    printf("The length of stack is: %d\n",StackLength( s ));

    PrintStack( s );

    while(1);

    return 0;

}

投 票

觉得本文不错,投一票   

评 论


验证码: 看不清?换一张

作者最新博文

    数据正在载入中..

部落热点博文

    数据正在载入中..