问题如下
输入:链表 a->b->c->d->e中指向节点c的指针
输出:无返回值,但新链表变为a->b->d->e
解答:
想了好久没想出来,看了提示才知道解法的。这里用到了一个小技巧。要删除中间节点,但是我们不知道要删除节点的上一个节点p,所以无法通过修改指针的方法(p->next=del->next)来删除节点,但知道要删除节点的后一个节点,那么我们换一个思路,把要删除的节点的数据与该节点的后一个节点的数据交换,然后删除后一个节点,从而达到目的。但是该方法不能删除最后一个节点,原因显而易见。
// a tricky solution,can't delete the last one element
int delete_node(node* node) {
int data;
node *p=node->next;
node->data=p->data;
node->next=p->next;
free(p);
}
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
-
-
常见锁相关
Linux 锁futex: 所有的futex同步操作都应该从用户空间开始,首先创建一个futex同步变量,也就是...
[阅读全文]
-
-
-
-
-
haproxy
[root@zyy180 ~]# tar xf haproxy-2.1.3.tar.gz [root@zyy18...
[阅读全文]
-
-
网友评论