list_add_tail()
2014-09-07 11:47
441 查看
将new所代表的list_head插入head所索引的队列的尾部
static inline void list_add_tail(struct list_head *new, struct list_head *head)
{
__list_add(new, head->prev, head);
}
将new所代表的list_head插入到next索引的双链表(next索引双链表的第一个节点)的尾部
static inline void __list_add(struct list_head *new,
struct list_head *prev,
struct list_head *next)
{
next->prev = new; //(1)
new->next = next; //(2)
new->prev = prev; //(3)
prev->next = new; //(4)
}
next
new head----+----------------------------------------------+
| | |
| list_head | list_head list_head list_head |
| |---------| | |---------| |---------| |---------| |
+-->| *next | +--->| *next |-->| *next |-->| *next |---+
|---------| |---------| |---------| |---------|
| *prev | +--| *prev |<--| *prev |<--| *prev |<--+---prev
|---------| | |---------| |---------| |---------| |
| |
+--------------------------------------------+
+---------------------+
| next | (4)
new| head----+ +-----------------------------------------+
| | | |
+--+ list_head | list_head list_head list_head |
| |---------|(2)
| |---------| |---------| |---------| |
+-->| *next |-----+--->| *next |-->| *next |-->| *next |---+
|---------| |---------| |---------| |---------|
+---| *prev |<---------| *prev |<--| *prev |<--| *prev |<--+---prev
| |---------| (1)
|---------| |---------| |---------| |
| |
+------------------------------------------------------------------+
(3)
static inline void list_add_tail(struct list_head *new, struct list_head *head)
{
__list_add(new, head->prev, head);
}
将new所代表的list_head插入到next索引的双链表(next索引双链表的第一个节点)的尾部
static inline void __list_add(struct list_head *new,
struct list_head *prev,
struct list_head *next)
{
next->prev = new; //(1)
new->next = next; //(2)
new->prev = prev; //(3)
prev->next = new; //(4)
}
next
new head----+----------------------------------------------+
| | |
| list_head | list_head list_head list_head |
| |---------| | |---------| |---------| |---------| |
+-->| *next | +--->| *next |-->| *next |-->| *next |---+
|---------| |---------| |---------| |---------|
| *prev | +--| *prev |<--| *prev |<--| *prev |<--+---prev
|---------| | |---------| |---------| |---------| |
| |
+--------------------------------------------+
+---------------------+
| next | (4)
new| head----+ +-----------------------------------------+
| | | |
+--+ list_head | list_head list_head list_head |
| |---------|(2)
| |---------| |---------| |---------| |
+-->| *next |-----+--->| *next |-->| *next |-->| *next |---+
|---------| |---------| |---------| |---------|
+---| *prev |<---------| *prev |<--| *prev |<--| *prev |<--+---prev
| |---------| (1)
|---------| |---------| |---------| |
| |
+------------------------------------------------------------------+
(3)
相关文章推荐
- list_add_tail()
- list_add_tail 双向链表实现分析 .
- list 链表及list_add_tail 双向链表实现分析
- list_add_tail 添加双向链表结点讲解
- list_add_tail 双向链表实现分析
- list_add_tail()
- clist addtail
- list_add_tail
- Listview:Cannot add header view to list -- setAdapter has already been called
- C# List<> add函数总是覆盖List中原有元素的解决办法
- list中add数据时,需注意!!!
- 数组转换为List后add或remove出现UnsupportedOperationException异常分析
- How do I add elements to a Scala List?
- LeetCode - Add to List 557. Reverse Words in a String III
- List之根据某个字段在add的时候过滤掉重复的数据
- Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常
- LeetCode 25 Reverse Nodes in k-Group Add to List (划分list为k组)
- Arrays.asList() 返回的list不能add,remove
- LeetCode- Add to List 88. Merge Sorted Array
- Arrays.asList() 返回的list不能add,remove