帮忙解释一段代码
struct ril_event {
struct ril_event *next;
struct ril_event *prev;
int fd;
int index;
bool persist;
struct timeval timeout;
ril_event_cb func;
void *param;
};
static void addToList(struct ril_event * ev, struct ril_event * list)
{
ev->next = list;
ev->prev = list->prev;
ev->prev->next = ev;
list->prev = ev;
dump_event(ev);
}
static void removeFromList(struct ril_event * ev)
{
dlog("~~~~ Removing event ~~~~");
dump_event(ev);
ev->next->prev = ev->prev;
ev->prev->next = ev->next;
ev->next = NULL;
ev->prev = NULL;
}
求解释链表对结构体ril_event的添加和删除操作,
是双链表的添加和删除吗?
我觉得不是,自己画了示意图,感觉不对。
求解释这是什么链表,主要讲解addToList()和removeFromList()。
[解决办法]
是双向链表啊
addToList在list之前插入ev
removeFromList删除节点ev
[解决办法]
双向链表
/*在list节点前插入节点ev,该双向链表应该是循环的*/static void addToList(struct ril_event * ev, struct ril_event * list){ ev->next = list; ev->prev = list->prev; ev->prev->next = ev; list->prev = ev; dump_event(ev);}/*删除ev节点*/static void removeFromList(struct ril_event * ev){ dlog("~~~~ Removing event ~~~~"); dump_event(ev); ev->next->prev = ev->prev; ev->prev->next = ev->next; ev->next = NULL; ev->prev = NULL;}