首先,栈由定义者自主控制使用,所以不能采用系统分配的栈,必须使用 malloc()分配。
对其数据结构,有两种定义方式:
方式一:
#define SIZE 100;
#define ADD 10;
typedef int typedata;
typedef struct
{
typedata* top;
typedata* base;
}stack,*psta
其分配内存的方式:
int Initstaick(psta s)
{
s->base=(typedata*)malloc(SIZE*sizeof(typedata));
if(s->base==NULL) return 0;
s->top=s->base;
}
方式二:
#define SIZE 100
typedef int typedata;
typedef struct staick
{
typedata base[SIZE];
typedata* top;
}staick,*psta;
其分配内存的方式:
int Initstaick(psta& s)
{
s=(psta)malloc(sizeof(staick));
if(!s) return 0;
s->top=s->base;
}
两种方式比较:方式一只需准备top,base 这两个typedata*类型的操作指针,在栈初始化分配内存的时候通过
s->base=(typedata*)malloc(SIZE*sizeof(typedata)); 类型*大小的方式
方式二则已经在数据结构中通过数组 base[SIZE] 定义好了栈初始化的大小,和后指针(base),只需定义 typedata* top。
所以其通过一捆式分配内存
s=(psta)malloc(sizeof(staick));