代码拉取完成,页面将自动刷新
#include "mf_linklist.h"
mf_link* link_malloc(uint8_t *data);
/*
*描述:创建一个链表
*返回:mf_link*:创建出的链表地址,NULL:创建失败
*/
mf_link* link_create(void)
{
mf_link* link = (mf_link*)malloc(sizeof(mf_link));
if(link == NULL) return NULL;
link->next = link;
link->len = 0;
link->data = 0;
return link;
}
//获取链表的元素数
uint8_t link_get_length(mf_link* link)
{
uint8_t count = 0;
if(link == NULL) return 0;
for(mf_link* p = link->next; p != link; p = p->next)
{
count ++;
}
return count;
}
/*
*描述:向链表头部添加数据
*参数:*link:要添加到的链表,*data:要添加的首地址指针,*len:纯数据类型使用,不用时传NULL
*返回:0:添加失败 1:添加成功
*/
uint8_t link_head_add(mf_link* link, uint8_t* data, uint8_t len)
{
mf_link* link_new = link_malloc(data);
if(link_new == NULL)
{
return 0;
}
link_new->next = link->next;
link->next = link_new;
return 1;
}
/*
*描述:向链表尾部添加数据
*参数:*link:要添加到的链表,*data:要添加的首地址指针,*len:纯数据类型使用,不用时传0
*返回:0:添加失败 1:添加成功
*/
uint8_t link_tail_add(mf_link* link, uint8_t* data, uint8_t len)
{
mf_link* link_new = link_malloc(data);
if(link_new == NULL) return 0;
mf_link* p;
for(p = link; p->next != link; p = p->next);
link_new->next = p->next;
p->next = link_new;
link_new->len = len;
return 1;
}
//申请节点
mf_link* link_malloc(uint8_t* data)
{
mf_link* link = (mf_link*)malloc(sizeof(mf_link));
if(link == NULL)
{
return NULL;
}
link->data = data;
link->len = 0;
link->next = NULL;
return link;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。