[数据结构]双向链表的前插操作

操作示意图:

[数据结构]双向链表的前插操作_第1张图片

伪代码操作:

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上。
	}


你可能感兴趣的:(数据结构)