学习笔记栈

来源:互联网 发布:淘宝代发怎么发货 编辑:程序博客网 时间:2024/06/07 06:09

首先,栈由定义者自主控制使用,所以不能采用系统分配的栈,必须使用 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  100typedef  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));



0 0