-
Notifications
You must be signed in to change notification settings - Fork 1
/
klist.h
87 lines (55 loc) · 1.48 KB
/
klist.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//
// klist.h
// mylib
//
// Created by bikang on 17/12/1.
// Copyright (c) 2017年 bikang. All rights reserved.
//
#ifndef __mylib__klist__
#define __mylib__klist__
#include "kheader.h"
typedef struct _LinkNode {
void *value;
struct _LinkNode *prev;
struct _LinkNode *next;
}LinkNode;
typedef struct _LinkList{
uint size;
LinkNode *tail;
LinkNode *head;
}LinkList;
//是否节点
void link_node_free(LinkNode *,link_call_back_func);
//创建和释放
LinkList* link_new();
int link_free(LinkList **,link_call_back_func);
//初始化
int link_init(LinkList *);
//销毁
int link_destroy(LinkList *,link_call_back_func);
//前后添加数据
int link_add_first(LinkList *, void *);
int link_add_last(LinkList *, void *);
//特殊位置查找和删除
void *link_insert(LinkList *,uint,void*);
//删除
void *link_remove(LinkList *,uint);
//删除头和尾
void *link_remove_first(LinkList *);
void *link_remove_last(LinkList *);
//设置对象
void *link_remove_obj(LinkList *, void*, link_compare_func);
void *link_set_obj(LinkList *, void*,void*, link_compare_func);
//设置数据
void *link_get(LinkList *,uint);
void *link_set(LinkList *,uint, void*);
void printLink(LinkList*);
#define Node_New() (LinkNode*)malloc(sizeof(LinkNode));
#define Node_Init(NODE,DATA)\
NODE->value=DATA;\
NODE->prev=NULL;\
NODE->next=NULL;\
#define LINK_TAIL(L) (L)->tail
#define LINK_HEAD(L) (L)->head
#define LINK_SIZE(L) (L)->size
#endif /* defined(__mylib__klist__) */