首页 > 试题广场 >

在一个单链表中,若删除p所指结点的后续结点,则执行

[单选题]
在一个单链表中,若删除p所指结点的后续结点,则执行
  • p = p->next;  p->next = p->next->next;
  • p->next = p->next;
  • p->next = p->next->next;
  • p = p->next->next;
推荐
无图无真相
答案:C

删除结点操作

删除操作是将单链表的第i个结点删除。先检查删除位置的合法性,然后查找表中第i-1个结点,即被删结点的前驱结点,再将其删除。其操作过程如图2-7所示。


图2-7  单链表结点的删除

假设结点*p为找到的被删结点的前驱结点,为了实现这一操作后的逻辑关系的变化,仅需修改*p的指针域,即将*p的指针域next指向*q的下一结点。

实现删除结点的代码片段如下:
p=GetElem(L,i-1);  //查找删除位置的前驱结点
q=p->next;  //令q指向被删除结点
p->next=q->next  //将*q结点从链中“断开”(这就是答案)
free (q) ;  //释放结点的存储空间
和插入算法一样,该算法的主要时间也是耗费在查找操作上,时间复杂度为O(n)。

参考:
http://c.biancheng.net/cpp/html/2672.html
编辑于 2015-08-05 14:47:52 回复(1)
iun头像 iun
C 显然
发表于 2015-08-08 00:05:57 回复(0)
选C,在单链表中若要删除直接后继节点,自然就是要将P的后继节点指向P后继节点的节点
发表于 2015-08-07 22:09:00 回复(0)
C 
在删除节点时,先把要删除节点的前驱节点的后继指针指向要删除节点的后继指针指向的节点,然后再把要删除节点的后继节点的前驱指针指向要删除节点的前驱节点


发表于 2015-08-07 19:17:43 回复(0)
选择C
发表于 2015-08-07 18:03:39 回复(0)
不用真正删除下一个节点只是将本节点的next指向下下一个节点就可以了
选C
发表于 2015-08-07 13:41:57 回复(0)
C画图易得
发表于 2015-08-07 11:44:45 回复(0)
答案c
发表于 2015-08-07 11:24:43 回复(0)
C
发表于 2015-08-07 10:46:24 回复(0)
A   画个图自己看
发表于 2015-01-15 12:42:00 回复(0)