📄 dulink.h
字号:
#ifndef DULINK_H_
#define DULINK_H_
#ifndef C_CLASS
#define C_CLASS struct
#endif
typedef struct _dunode
{
void *data;
struct _dunode *prior;
struct _dunode *next;
}DUNODE;
C_CLASS LINKLIST
{
C_CLASS LINKLIST* THIS;
DUNODE* head; /*头指针 */
DUNODE* rearptr;
int count;
void (*insert_rear)(C_CLASS LINKLIST* THIS,void *data,int size); /*尾插法插入元素*/
DUNODE* (*get_node_by_index)(C_CLASS LINKLIST* THIS,int index);
/* 根据key值,并通过一定的比较算法cmp获取链表中的结点 */
DUNODE* (*get_node_by_key)(C_CLASS LINKLIST* THIS,char* key,int (*condition)(void *p1,void *p2));
/* 获取结点在链表中的位置 */
int (*get_index_by_key)(C_CLASS LINKLIST* THIS,char* key,int (*condition)(void *p1,void *p2));
int (*delete_node_by_key)(C_CLASS LINKLIST* THIS,char* key,int (*condition)(void *p1,void *p2));
void (*clear)(C_CLASS LINKLIST* THIS);
/* 删除链表结点,但是不删除头结点 */
void (*del)(C_CLASS LINKLIST* THIS);
};
void link_init(C_CLASS LINKLIST* link);
void link_insert_rear(C_CLASS LINKLIST* link,void *data,int size);
DUNODE* link_get_node_by_index(C_CLASS LINKLIST* link,int index);
/* 根据key值,获取结点 */
DUNODE* link_get_node_by_key(C_CLASS LINKLIST* link,char* key,int (*condition)(void *p1,void *p2));
/* 获取结点在链表中的位置 */
int link_get_index_by_key(C_CLASS LINKLIST* link,char* key,int (*condition)(void *p1,void *p2));
/* 根据key值删除结点 */
int link_delete_node_by_key(C_CLASS LINKLIST* link,char* key,int (*condition)(void *p1,void *p2));
void link_clear(C_CLASS LINKLIST* link);
/* 删除链表有效结点,不包括头结点 */
void link_del(C_CLASS LINKLIST* link);
void init_node(DUNODE* n);
DUNODE* create_node(void *data,int size);
void free_node(DUNODE *n);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -