顺序栈的实现C的实现
发布网友
发布时间:2022-05-05 17:07
我来回答
共1个回答
热心网友
时间:2022-06-27 19:51
#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(sqstack *s){
int e;
if((*s).top==(*s).base) return 0;
e=*((*s).top-1);
return e;
}
void main()
{
sqstack s;
InitStack(s);
Push(&s,1);
Push(&s,2);
Push(&s,3);
Push(&s,4);
Pop(&s,2);
printf("&d",GetTop(&s));
}
试试看,应该行的