学习笔记栈

本文介绍了两种栈的数据结构实现方式:一种是通过malloc为栈元素分配内存,仅使用两个操作指针;另一种是在结构体中预定义数组来初始化栈大小,并分配整个结构体的内存。文章对比了这两种实现方式的特点。

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值