首页 > 试题广场 >

已知不带头结点的双向循环链表中的结点结构为(data,las

[单选题]
已知不带头结点的双向循环链表中的结点结构为(data,last,next) ,在指针p所指结点之后插入由指针s指向的新结点,相应操作为( )?

  • p-> next=s; s-> last=p; p->next-> last=s; S->next=p->next
  • p=>next=s; p-> next->last=s; S-> last=p;s-> next=p->next
  • s->last=p; S-> next-p->next; p-> next s; p-: >next->last=s
  • s->last=p; s-> next=p->next; p-> next-> last=s; p->next=s
推荐

答案选D

解析:
断开的前提一定是,某个指针指向断开之后, 之前指向的结点一定还能访问到,只要满足这个前提,其他没有先后顺序
所以,1, 2 谁在前,都可以
对于3, 4, 如果对于单链表来说,一定是3在前,不过对于双链表,也可以互换。
但是前提是可以借助 s所指的结点 访问到

编辑于 2019-11-12 20:02:16 回复(0)

虽然能看懂,但是你题目错了就是错了🥺应该是ocr

识别率低把🧚🏻‍♀️

发表于 2019-11-13 21:27:58 回复(0)
先处理要插入结点的前驱和后继,在处理后继结点的前驱,最后才是前驱结点的后继
发表于 2020-09-01 22:02:39 回复(0)
直接点就完了呗,还整个箭头,看的我头皮发麻
发表于 2019-12-11 16:56:52 回复(0)
B。考察的是链表中插入新节点的步骤。
  1. 将新节点s指向的数据赋值给p的next。p->next=s
  2. 将新节点s指向的数据赋值给原链表p的next结点的last结点。p-> next->last=s
  3. 将新节点p指向的数据last指向p。S-> last=p
  4. 原链表中p的next指向新节点s的next。s-> next=p->next
编辑于 2019-11-12 20:01:53 回复(1)

具体操作如下:
s的前驱节点指向p (s.last)
s的后继节点指向p的后继节点 (s.next)
p的后继节点的前驱节点指向s (p.next.last)
p的后继节点指向s (p.next)

第三步可能有些难理解,p.next的前驱节点,就是原本是p的后继节点,我们设为p+1
p+1的前驱节点指向s

发表于 2021-10-03 19:19:54 回复(0)
D
发表于 2019-11-12 00:18:29 回复(0)