顺序栈的实现C的实现

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:25:15
数据结构C语言栈的实现!

#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OVERFLOW -2

typedef struct{
int *base;
int *top;
int stacksize;
}sqstack;

int InitStack(sqstack s){
s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!s.base) exit(OVERFLOW);
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return 1;
}

int Push(sqstack *s,int e){
if((*s).top-(*s).base>=(*s).stacksize){
(*s).base=(int *)realloc((*s).base,((*s).stacksize+STACKINCREMENT)*sizeof(int));

if(!(*s).base) exit(OVERFLOW);

(*s).top=(*s).base+(*s).stacksize;
(*s).stacksize+=STACKINCREMENT;
}
*(*s).top++=e;
return 1;
}

int Pop(sqstack *s,int e){
if((*s).top==(*s).base) return 0;
e=*(--(*s).top);
return 1;
}

int GetTop(