读书人

帮忙解释一段代码,该如何解决

发布时间: 2012-04-08 14:38:30 作者: rapoo

帮忙解释一段代码
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
[解决办法]
双向链表

C/C++ code
/*在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;} 

读书人网 >C语言

热点推荐