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


     1 #include "stdafx.h"
     2 #include <iostream>
     3 /*
     4 题目:在O(1)时间删除链表结点
     5     给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。链表结点与函数定义如下:
     6     struct ListNode
     7     {
     8         int m_nValue;
     9         ListNode *m_pNext;
    10     };
    11     void DeleteNode(ListNode** pListHead,ListNode* pToBeDeleted);
    12 */
    13 using namespace std;
    14 struct ListNode
    15     {
    16         int m_nValue;
    17         ListNode *m_pNext;
    18     };
    19 void DeleteNode(ListNode** pListHead,ListNode* pToBeDeleted)
    20 {
    21     if (pListHead ==NULL||pToBeDeleted==NULL)
    22     {
    23         return;
    24     }
    25     //删除的不是尾结点
    26     if(pToBeDeleted->m_pNext!=NULL)
    27     {
    28         ListNode* pNext = pToBeDeleted->m_pNext;
    29         pToBeDeleted->m_nValue=pNext->m_nValue;
    30         pToBeDeleted->m_pNext=pNext->m_pNext;
    31         delete pNext;
    32         pNext=NULL;
    33     }
    34     //链表只有一个结点
    35     else if(*pListHead==pToBeDeleted)
    36     {
    37         delete pToBeDeleted;
    38         pToBeDeleted=NULL;
    39         *pListHead = NULL;
    40     }
    41     //如果要删除的是尾结点
    42     else
    43     {
    44         ListNode* pNode = *pListHead;
    45         while(pNode->m_pNext!=pToBeDeleted)
    46             pNode=pNode->m_pNext;
    47         pNode->m_pNext = NULL;
    48         delete pToBeDeleted;
    49         pToBeDeleted=NULL;
    50     }
    51 }
    52 
    53 
    54 int _tmain(int argc, _TCHAR* argv[])
    55 { 
    56     
    57     return 0 ;
    58 }
  • 相关阅读:
    3. What’s New in Spring Security 4.2 spring security 4.2的新功能
    2. Introduction介绍
    1. Getting Started入门
    32. CAS Authentication
    Java序列化
    hive优化--数据倾斜优化
    hive优化之——控制hive任务中的map数和reduce数
    maven中引入jstl
    redis位操作
    Windows单机安装hadoop
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3561574.html
Copyright © 2020-2023  润新知