已知单链表头指针位置,已知P指针指向其中某结点,设计算法,删除P指针所指向结点
问题描述:
已知单链表头指针位置,已知P指针指向其中某结点,设计算法,删除P指针所指向结点
前驱结点
答
假设链表类型为
struct node
{
int data;
struct node *next;
};
node *q = p->next;
p->data = q->data;
p->next = q->next;
free(q);
搞定!
思路是这样的:
我们删除p的下一个节点很容易,删除p所指向的节点很难,我们可以用一个巧妙的方法,把p的下一个节点的内容赋值给p(相当于把p删除了,只是下一个节点是一个多余的节点了),那么我们只要删除下一个节点就可以了,这样就转化成删除p的下一个节点了.
最终的到的链是一样的,只是换个思路想问题.