校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > UI专业知识 > 色彩
题目

单链表中结点的结构为(data,link),若想删除结点p(不是头节点或者尾结点)的直接后继,则应执行下列哪个操作

A.p=p->link ; p->link=p->link->link

B.p->link->link=p->link;

C.p=p->link->link

D.p->link=p->link->link

解答

参考答案:D.

选择D

删除类型的 出现两次,答案是同样的


删除结点操作

删除操作是将单链表的第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)。


C 1条回复 评论
StanyChen

不过还有待完善,挺好的,不错的资源。

发表于 2021-09-10 19:00:00
0 0