近日在阅读《编程之美》中看到,单链表在不告诉头指针的情况下完成删除指定节点的方法,算法为将删除节点的下一个节点的数据copy到删除节点中,再删除删除节点的下一个节点,从而实现移花接木的效果,完成对要求删除节点数据删除的目的。代码如下:
pCurrent->next = pNext->next;
pCurrent->data = pNext->data;
delete pNext;
扩张问题为编写一个函数,给定一个链表的头指针,要求遍历一次,将单链表中的顺序反过来。
我编写这个函数的实现,代码如下:
Node_t * inverse( Node_t *pHead )
{
Node_t *pNext = NULL;
Node_t *pCurrent = pHead;
Node_t *pLast = NULL;
while (pCurrent->next != NULL)
{
pNext = pCurrent->next;
pCurrent->next = pLast;
pLast = pCurrent;
pCurrent = pNext;
}
pCurrent->next = pLast;
return pCurrent;
}
通过总结,就是用节点指针变量存储欲改变之前的节点指针,从而就可以实现各种功能了。