这是一个删除单链表多余相同数据的方法。
else里的s=q
为什么要写这一步
s的作用不是临时存放待删除q的next节点的么,所以为什么要给s赋新的值?
基于Monster 组和GPT的调写:
在这个函数中,第二个for循环的目的是在p节点之后查找所有与p节点相同的节点,并将它们删除。因此,变量q表示的是当前正在检查的节点,而变量s表示的是q节点的前一个节点。在这个循环中,如果发现q节点的数据与p节点的数据相同,则将s节点的next指向q节点的next,即删除q节点。在这个过程中,s节点的作用是指向前一个节点,以便能够修改前一个节点的next指针。因此,当q节点被删除时,s节点的next应该指向q节点的下一个节点,而不是q节点本身。因此,需要将s节点设置为q节点,以便在下一个循环中正确地处理q节点的下一个节点。也就是说,s=q的目的是将s节点更新为当前的q节点,以便在下一个循环中处理q节点的下一个节点。
s 用来记录当前不重复的最后一个数据,q向前探索,碰到不重复的再次记录到s里
不知道你这个问题是否已经解决, 如果还没有解决的话: