zoukankan      html  css  js  c++  java
  • Chapter07 链表(下):如何轻松学出正确的链表代码?

    技巧一:理解指针或引用的含义

    技巧二:指针丢失和内存泄漏

    技巧三:利用哨兵简化实现难度

    技巧四:重点留意边界条件处理

    如果链表未空时,代码是否能够正常运行

    如果链表只包含一个节点时,代码能否正常运行

    如果链表只包含两个节点时,代码能否正常运行

    代码逻辑在处理头节点和尾节点的时候,能否正常运行

    技巧五:举例画图

    技巧六:多谢多练,没有捷径

    单链表反转

    Node* List::ReversalList()

    {

    Node* pPreNode = NULL;

    Node* pNextNode = NULL;

    Node* pCurrentNode = pHead;

    while(pCurrentNode != NULL)

    {

    pNextNode = pCurrentNode->pNext;

    if(pNextNode == NULL)

    {

      pHead = pCurrentNode;

    }

      pCurrentNode->pNext = pPreNode;

      pPreNode = pCurrentNode;

      pCurrentNode = pNextNode;

    }

    return pHead;

    }

    链表中环的检测

    //fast slow pointer function

    bool List::IsRecircleList()

    {

      Node *pSlow,*pFast;

      pSlow = pFast = pHead;

      while(pSlow != NULL && pFast->pNext->pNext != NULL)

      {

        pSlow = pSlow->pNext;

        pFast = pFast->pNext->pNext;

        if(pSlow == pFast)

        return true;

      }

      return false;

    }

    两个有序链表的合并

    删除链表倒数第n个节点

    求链表的中间节点

  • 相关阅读:
    自适应高度的 文本框
    点击小图片遮罩显示大图片
    C++中的声明与定义
    LeetCode_Bit Manipulation
    “纯”面向对象
    指针和引用
    new和delete用法小结
    C++中的变量属性小结
    C++的一些黑暗料理
    Python中的字典和集合
  • 原文地址:https://www.cnblogs.com/zhaohu/p/9975008.html
Copyright © 2011-2022 走看看