有一个足够长的单链表,并且头指针未知。靠近中间位置附近有一个结点,指针是p,请把该结点删除。
再看仍是没有思路啊。没关系,我们来看看删除后的预想结果:
总之,目的就是要留下:100, 200, 400, 500. 那么可以这样去考虑,先把p结点的值改一下:
我们执行p->data = p->next->data;
然后考虑把p后面的结点删除就行,这很容易吧!操作步骤和结果如下:
q = p->next;
p->next = p->next->next;
free(q);
这样就达到目的了,看似不可能的事情,结果又可能了。