如何解决__list_add 与 linux 链表中的 list_add
我很难理解 __list_add
与 list_add
的工作原理?我确实在这里阅读了一些答案,但不能很好地理解。我已经在附件中提出了我的问题......请看一下并给我建议吗?
解决方法
将 /Users/[]/.cache/pre-commit/repo180cws4u/bin/python install -m six
内联函数合并到 __list_add
的主体中会产生以下等效项:
list_add
这将在 static inline list_add(struct list_head *head,struct list_head *new)
{
head->next->prev = new;
new->next = head->next;
new->prev = head;
head->next = new;
}
和 new
之间插入 head
条目。通常,head->next
指向双向链表的控制节点,head
是要添加到双向链表前面的条目。
原始状态:
new
[oldheadprev] [head] [oldheadnext]
next ------> next -------------------------> next
prev <------ prev <------------------------- prev
[new]
next
prev
之后:
head->next->prev = new;
[oldheadprev] [head] [oldheadnext]
next ------> next -------------------------> next
prev <------ prev,- prev
/
[new] /
next /
prev <--'
之后:
new->next = head->next;
[oldheadprev] [head] [oldheadnext]
next ------> next -------------------->,--> next
prev <------ prev /,- prev
/ /
[new] / /
next -' /
prev <--'
之后:
new->prev = head;
[oldheadprev] [head] [oldheadnext]
next ------> next -------------------->,--> next
prev <------ prev <-,/,- prev
\ / /
\ [new] / /
\ next -' /
`---- prev <--'
之后:
head->next = new;
即使列表为空,代码也能工作。在空列表中,控制节点 ([oldheadprev] [head] [oldheadnext]
next ------> next ----,\ /,- prev
\ \ / /
\ \ [new] / /
\ `-> next -' /
`---- prev <--'
) 的 next
和 prev
指针指向自身:head
。
原始空列表状态:
head->next = head; head->prev = head;
[head] [new],---> next -----,next
|,- prev <-,| prev
| `---------' |
`---------------'
之后:
head->next->prev = new;
[head] [new],- prev | prev <-,| `------------|---------------'
`---------------'
之后:
new->next = head->next;
[head] [new],->,next -----,| |,|
| | `------------|---------------' |
| `---------------' |
`--------------------------------------'
之后:
new->prev = head;
[head] [new],- prev <----|------- prev <-,|
| | `------------|---------------' |
| `---------------' |
`--------------------------------------'
之后:
head->next = new;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。