通用双向链表
通用双向链表,包括增加,删除节点,修改等,功能齐全typedef struct linkd { // 链表头 node_t *head; // 链表尾 node_t *rear; // 链表节点数 int count; }link_t; /* 链表操作 */ /************初始化 ***************/ void link_init(link_t *plink); /******************增加节点*******************/ //通过index插入节点 int insert_node_by_index(link_t *plink,int index,void *data); //从头部插入节点 int insert_node_front(link_t *plink,void *data); //从尾部插入节点 int insert_node_rear(link_t *plink,void *data); /******************查找节点*******************/ //通过index获取链表的某个节点 node_t * getnode_by_index(link_t *plink,int index); /* 删除节点 */ //从头部删除节点 int del_node_front(link_t *plink); //从尾部删除节点 int del_node_rear(link_t *plink); //删除链表里面的节点,不包括链表本身 void del_all_node(link_t *plink); //删除链表澹(所有节点和链表本身) void del_link(link_t *plink); //删除某个节点 void del_at(link_t *plink,int pos); //创建一个节点 node_t* create_node(void *data); //释放一个节点 void free_node(node_t *node); //判断是否是空链表 int is_empty_link(link_t *link); * getnode_by_index(link_t *plink,int index); /* 删除节点 */ //从头部删除节点 int del_node_front(link_t *plink); //从尾部删除节点 int del_node_rear(link_t *plink); //删除链表里面的节点,不包括链表本身 void del_all_node(link_t *plink); //删除链表澹(所有节点和链表本身) void del_link(link_t *plink); //删除某个节点 void del_at(link_t *plink,int pos); //创建一个节点 node_t* create_node(void *data); //释放一个节点 void free_node(node_t *node); //判断是否是空链表 int is_empty_link(link_t *link);
用户评论
老师发布的作业,这个链表还是很合适的 就是有点贵了