在双链表L中第i个位置插入值域为e的结点。
双链表的存储结构定义:
typedef struct DLinkList{
int data;
DLinkList * prior;
DLinkList * next;
}DLinkList;
思路:
1.首先我们要找到要插入该位置的前一个结点。也就是i-1 个位置。
2.然后判断该位置是否为空。是为空,则返回0。不为空,则返回1;
3.完成插入节点操作
总结:
先查找第i-1个节点,然后再插入 , 单链表不用查找
C语言代码实现:
int LinkInsert(DLinkList * &L,int i,int e){ //向第i个位置插入值域为e的结点
int j = 0;
DLinkList * p = L,* s;
while(j < i-1&& p != null){
j++;
p = p->next;
}
if(p == null){
return 0;
}else{
s = (DLinkList *)malloc(sizeof(DLinkList));
s->data = e; //数据域赋值
s->next = p->next; //将s插入p后
if(p->next != null) p->next-prior = s; //若存在*p的后继节点,将其前驱指向*s
s->prior = p;
p->next = s;
return 1;
}
}