C语言双向链表与双向循环链表如何详细解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计640个文字,预计阅读时间需要3分钟。
双向链表和双向循环链表与单向链表相比,多了一个前驱节点。如果它为空,那么next和prior都指向自己。而对于双向循环链表,只需要最后一个元素的next指向head,head的prior指向最后一个元素。
双向链表和双向循环链表
和单向链表相比,多了一个前驱结点。如果他为空,那么next和prior都指向自己。而对于双循环链表,只需要最后一个元素的next指向head->next,head->next的prior指向最后一个节点即可。
插入操作
新节点s插入链表,s->next给p结点,s->prior给p->prior,然后,p->prior->next指向s,p->prior再指向s。顺序需要注意
s->next = p; s->prior = p->prior; p->prior->next = s; p->prior = s;
删除操作
删除结点p。p->next->prior 指向 p->prior,p->prior->next 指向 p->next 。最后将p结点delete。
本文共计640个文字,预计阅读时间需要3分钟。
双向链表和双向循环链表与单向链表相比,多了一个前驱节点。如果它为空,那么next和prior都指向自己。而对于双向循环链表,只需要最后一个元素的next指向head,head的prior指向最后一个元素。
双向链表和双向循环链表
和单向链表相比,多了一个前驱结点。如果他为空,那么next和prior都指向自己。而对于双循环链表,只需要最后一个元素的next指向head->next,head->next的prior指向最后一个节点即可。
插入操作
新节点s插入链表,s->next给p结点,s->prior给p->prior,然后,p->prior->next指向s,p->prior再指向s。顺序需要注意
s->next = p; s->prior = p->prior; p->prior->next = s; p->prior = s;
删除操作
删除结点p。p->next->prior 指向 p->prior,p->prior->next 指向 p->next 。最后将p结点delete。

