数据结构之顺序表

创建一个顺序表并销毁它。


typedef struct _seqlist          //创建一个名叫sequencelist的结构体
{
	int *list;
	int len;
	int MAX_len;
}sequencelist;

sequencelist *creat_list();     //声明创建一个顺序表的函数

void Destroy(sequencelist *s);      //声明销毁一个顺序表的函数

上面的几行代码写在头文件中,函数的实现在下面。


sequencelist *creat_list()    //实现创建一个顺序表的函数
{
	sequencelist *s = (sequencelist *)malloc(sizeof(sequencelist) / sizeof(char));   //定义一个变量,该变量指向sequencelist,并且为这个变量在堆中给他分配一些空间。
	if(s == NULL)   //如果空间分配失败,则退出程序
	{
		return NULL;
	}
	
	s->list = (int *)malloc(sizeof(int) / sizeof(char) * SIZE_LIST);  //为结构体中的指针指向的地址开辟一块内存空间,用于放值。
	if(s->list == NULL)  //判断空间是否开辟成功。
	{
		free(s);   //释放刚刚开辟的内存,防止内存泄漏
		return NULL;
	}
	s->len = 0;
	s->MAX_len = SIZE_LIST;   //初始化
	
	return s;
}

//销毁成功的顺序表
void Destroy(sequencelist *s)
{
	if(s == NULL)
	{
		return;
	}
	free(s->list);  //释放结构体指针指向的内存
	free(s);  //释放结构体变量的内存
	
}


int main()
{
	sequencelist *s = creat_list();
	if(s == NULL)
	{
		printf("创建失败\n");
		return FALSE;
	}
	printf("创建成功\n");
	
	Destroy(s);
	s = NULL;
	printf("销毁成功\n");
	
	return 0;
}

总结:
1、	内存泄漏:如果我们开辟的的存储空间如果不用free释放掉,那么这块内存在堆区就会一直存在,而且在堆区中,这些内存是没有名字的,所以这块内存就会一直被占着,没法使用,就导致你的内存可使用的空间变小,这种现象就就所谓的内存泄漏。
2、	我们开辟的内存空间是在堆区中,但是我们定的变量s在栈区里,所以我们要定义一个指针指向这块内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值