设指针变量p指向单链表中的结点A,现在需要删去结点A,有哪些步骤,可以给我画个图让我明白些吗?急求

设指针变量p指向单链表中的结点A,现在需要删去结点A,有哪些步骤,可以给我画个图让我明白些吗?急求答案!!

    从head节点开始搜索,找到A的前驱节点B,即B→next=A

    将A的前驱节点的后继节点修改为A的后继节点

    即B→next=A→next

    释放A占用的空间,即free(A)

追问

答案不是这样的😭😭。。这个题目好麻烦啊

追答

这就是具体步骤,不知道你想问什么

追问

这不是具体步骤,具体步骤我发给你看下,我也不懂,看看你懂不,明天就要考试了

这个才是

追答

看来你真的是什么都没搞明白,我建议你去重新复习一遍指针和链表的操作
这一段命令是针对已经定位到节点A而言的,而我说的是删除某个节点的一般步骤

你的步骤是一个技巧做法,要求p不是尾节点,操作就是把p的后继节点赋给p,然后把p的后继节点删除,这样相当于删除了p,这种方法不用从头开始搜整个表。
每一步很容易理解
q=p→next //新建一个指针q指向p的后继
p→data=q→data //把p的后继节点的数值赋给p
p→next=q→next //把p的后继节点修改为p的后继节点的后继节点
free(q) //删除p的后继节点

追问

谢了。。真心谢谢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-09
q=p->next;p->data=q->data;p->next=q->next;free(q);
相似回答