zoukankan      html  css  js  c++  java
  • 在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 }
  • 相关阅读:
    如何把git上的小程序项目跑起来
    异常好用的六种vue组件通信方式
    2021.8.10面试总结
    高频面试题总结
    21年8.6面试总结
    2021.8.4上海微创软件(主react)电话面试
    promis封装各种请求
    各个框架解决跨域问题
    华人运通(主vue)前端研发初级工程师
    css常用命名
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3561574.html
Copyright © 2011-2022 走看看