#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int Status;
typedef int SElemType;
typedef struct
{
SElemType *top;
SElemType *base;
int size;
}SqStack;
Status InitStack(SqStack *S) //构造空栈
{
S->base=(SElemType *)malloc(sizeof(SElemType)*STACK_INIT_SIZE);
if(!(S->base))
exit(0);
S->top=S->base;
S->size=STACK_INIT_SIZE;
return 0;
}
Status Push(SqStack *S,SElemType e) //入栈
{
if(S->top-S->base>=S->size)
{
S->base=(SElemType *)realloc(S->base,sizeof(SElemType)*(S->size+STACKINCREMENT));
if(!(S->base))
exit(0);
S->top=S->base+S->size;
S->size+=STACKINCREMENT;
}
*(S->top)=e;
S->top++;
return 1;
}
Status Pop(SqStack *S,SElemType *e) //出栈
{
if(S->base==S->top)
{
printf("空栈!");
return 0;
}
S->top--;
*e=*(S->top);
return 1;
}
Status DestroyStack(SqStack *S) //销毁栈
{
free(S->base);
S->top=NULL;
S->base==NULL;
S->size=0;
return 1;
}
栈的初始化,出栈,入栈,销毁栈(无主函数)
最新推荐文章于 2025-04-07 13:20:53 发布