栈的函数74129
#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; }


数据正在载入中..