删除一个没有头节点链表中的某个节点

来源:互联网 发布:淘宝网 话费充值 编辑:程序博客网 时间:2024/04/28 19:13

题目描述:给定一个链表,没有头节点,如何删除其中的某个随机节点呢?

分析:如果一个链表没有头节点的话,那么我们就不可以找到被删除节点的前面一个节点。如何按照这个思路来,就无法实现功能了。
不如我们换一个思路,删除节点的目的是什么?是要达到被删除节点中的data被删除,也就是说,我们实际上只需要删除该节点的data,而不是整个节点。如何实现呢?我们可以把需要删除节点的后面一个节点中的data,依次往前面赋值,并把此节点删除,即可。例如:ABCD三个节点,假如我们需要删除B节点,那么我们可以把C->data赋值给B->data,让D和B相连,删除C,即可。

代码如下:

void DeleteNode(node* pCurrent){    if(pCurrent == NULL)        return NULL;     node* pNext = pCurrent->next;     if(pNext != NULL)    {        pCurrent->next = pNext->next;         pCurrent->data = pNext->data;         delete pNext;     }}

参考:
《编程之美》

1 0