• 在O(1)时间内删除链表节点


    struct ListNode
    {
    	int nValue;
    	ListNode* pNext;
    };
    
    void DeleteListNode(ListNode* pHeadNode, ListNode* pDeleteNode)
    {
    	if (!pHeadNode || !pDeleteNode)
    		return;
    
    	if (pHeadNode == pDeleteNode)    
    	{
    		delete pDeleteNode;
    		pDeleteNode = nullptr;
    		pHeadNode = nullptr;
    	}
    	else if (pDeleteNode->pNext == nullptr)
    	{
    		ListNode* pTempNode = pHeadNode;
    		while (pTempNode->pNext != pDeleteNode)
    		{
    			pTempNode = pTempNode->pNext;
    		}
    		pTempNode->pNext = pDeleteNode->pNext;
    		delete pDeleteNode;
    		pDeleteNode = nullptr;
    	}
    	else
    	{
    		ListNode* pTempNode = pDeleteNode->pNext;
    		pDeleteNode->nValue = pTempNode->nValue;
    		pDeleteNode->pNext = pTempNode->pNext;
    		delete pTempNode;
    		pTempNode = nullptr;
    	}
    }
    

      

  • 相关阅读:
    Apollo与ROS
    QT windeployqt
    自定义QGraphicsItem
    ROS与C++
    aptitude与apt-get
    解决tcp粘包问题
    网络中两台主机通信
    I/O多路复用之select、poll、epoll
    Nginx命令行控制
    C++11
  • 原文地址:https://www.cnblogs.com/yapp/p/14389727.html
Copyright © 2020-2023  润新知