(注意:这里第一个结点的bwd为NULL,最后一个节点的fwd位NULL。)
要将一个节点插入到双链表中,有几种情况:
1、插入链表中间位置
2、插入链表起始位置
3、插入链表结束位置
4、原链表为空,相当于既要插入起始位置,又插入结束位置。
每种情况有4个指针必须修改:
在1,2 两种情况下新节点fwd字段必须设置为指向链表的下一个节点,链表下一个节点的bwd字段必须指向这个新节点。
在3,4两种情况下,新节点的fwd字段字段必须设置为NULL,根节点的fwd必须指向这个新节点。
在1,3两种情况下,新节点的bwd字段必须设置为指向链表的前一个节点,而链表前一个节点的fwd字段必须设置为新节点。
在2,4两种情况下,新节点的bwd字段必须设置为NULL,根节点的fwd必须设置为新节点。
- 版本一:
#define TRUE 1
#define FALSE 0
#define NUL '\0'
typedef struct NODE {
struct NODE *fwd;
struct NODE *bwd;
int value;
}