本文主要是介绍【单链表经典面试题解析二】删除一个无头单链表的非尾节点(不能遍历链表),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
要在不能遍历一遍单链表的情况下,删除单链表的非尾结点。我们可以试试如下这种方法:
首先,我们先建立一个节点pCur,令节点pCur指向要删除的节点pos的下一个节点,然后,我们先把pCur的值赋给pos,然后再删除掉pCur这个节点,示意图如下所示:
令节点pCur指向要删除的节点pos的下一个节点:
我们先把pCur的值赋给pos,然后再删除掉pCur这个节点:
这样,把pCur的值赋给pos,再删除pCur这个节点也就等同于直接删除pos这个节点。
最后,程序如下:
void DeleteNotTailNode(pNode pos)
{pNode pCur = NULL;if(pos){pCur = pos->_pNext;pos->_data = pCur->_data;pos->_pNext = pCur->_pNext;free(pCur);}
}
这篇关于【单链表经典面试题解析二】删除一个无头单链表的非尾节点(不能遍历链表)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!