码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-09 15:58:56      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:链表   节点   删除   头节点   

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

分析:如果一个链表没有头节点的话,那么我们就不可以找到被删除节点的前面一个节点。如何按照这个思路来,就无法实现功能了。
不如我们换一个思路,删除节点的目的是什么?是要达到被删除节点中的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; 
    }
}

参考:
《编程之美》

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

标签:链表   节点   删除   头节点   

原文地址:http://blog.csdn.net/puqutogether/article/details/43671665

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!