请教数据结构的一道题! 删除双向链表中间某个节点,需要修改个()指针域? A1 B2 C3 D4
删除双向链表中间某个节点,需要修改2个指针域。双向链表具备两个方向的指向,无非就是每个结点成了两个指针。有两个指针域分别指向前一个结点和后一个结点,还有一部分用来保存结点数据,初始化结点时需要将两个指针都指向空。
增加结点时,需要将最后一个结点的next指针指向新结点,然后将新结点的prev指向最后一个结点。
删除结点时需要将待删除结点的前一个结点的next指向待删除结点的后一个结点,然后,把后者的prev指针指向前者。
插入结点就是将新结点的前一个结点的next指针指向指向新结点,然后把新结点的next指针指向前一个结点原来后面的那个结点,然后把后面的结点的prev指针指向新结点,把新结点的Prev指针指向前一个结点。
扩展资料:
双向链表的 C 语言实现代码:
line*initline(line*head){
head=(1ine*)malloc(sizeof(1ine));//创建链表第一个结点(首元结点)
head->prior=NULL;
head->next=NULL;
head->data=1;
line*list=head;
for(int i=2;i<=3;i++){
∥创建并初始化一个新结点
1ine*body=(line*)malloc(sizeof(line));
body->prior=NULL;
body->next=NULL;
body->data=i;
1ist->next=body;//直接前趋结点的next指针指向新结点
body->prior=list;/新结点指向直接前趋结点
list=list->next;
return head;