参考GPT和自己的思路:
在这个操作中,将s所指向的结点插入到p所指向结点之前。第一步中的s->next = p->next是将s所指向结点的next指针指向p所指向结点的下一个结点,也就是p原本所指向的下一个结点。这样做是为了保证在插入s结点之后,原本在p结点之后的结点仍然可以被连接到链表上。如果s->next指向p结点,那么p结点后面的结点就会被覆盖掉了,链表就出现了问题。所以,在这个操作中,s->next = p->next是非常必要的一步。
因为不知道p的前一个节点是什么,所以没有办法简单的链表节点插入。比如假设p前面节点是q,那么插入方法就是s->next = p;q->next =s;就好了
这里采用的方法是,将s插入p节点后面,然后交换p和s节点的数据的方式。前两步完成s插入p之后,后三步完成p和s节点数据交换