操作示意图:
伪代码操作:
void DInsertBefore(DListNode *p,DataType x){
//带头节点的双链表中,将值为X的新节点插入P之前,设P!=null
DListNode *s = malloc(sizeof(DListNode));//1、这个是申请一个新节点,用来放X的。
s->data = x;//2、把新节点的数据放为x
s->prior = p->prior;//3、这个是新节点的前驱节点接到原来P的前驱节点上
s->next = p;//4、新节点的后节点接到P上
p->prior->next = s;//5、这个是把P的前驱节点O的后继节点接到S上
p->prior = s;//6、把P的前驱节点接到S上。
}