什么是循环链表?
最后一个结点的链接又指回头结点(第一个结点)的链表,整个链表形成一个环。与单链表相比,操作时判断最后一个结点的条件为:结点的链接是否为头结点
空表
条件:L->next==L
非空表
条件 p->next==L
-什么是双向链表?
用两个链接表示元素间的逻辑关系,其一指向直接后继,其二指向直接前驱。
typedef struct DuLNode{
Elem Type data;
struct DuLNode *prior;
struct DuLNode *next;
}DulNode, *DuLinkList;
条件:L->next==NULL且L->prior==NULL
条件:L->prior==NULL且p->next==NULL
实现在双向链表中的第i个结点前插入一个结点
分析:
先找到第i-1个结点,p指向它;改变第i-1个结点的后继指针,第i个结点的前驱指针;同时还要改变要插入结点的前驱和后继指针。
- 图示:
s->next = p->next
s->next->prior=s
p->next=s
s->prior=p
实现在双向链表中删除第i个结点
分析
先找到第i-1个结点,p指向它;改变第i-1个结点的后继指针指向第i+1个结点;同时还要改变第i+1个结点的前驱指针指向第i-1个结点
图示:
p->next = p->next->next
p->next->prior = p
原文地址:http://blog.csdn.net/gxseveryday/article/details/45620481