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

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

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

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

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

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

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

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

技巧五:举例画图

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

单链表反转

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个节点

求链表的中间节点

Chapter07 链表(下):如何轻松学出正确的链表代码?的更多相关文章

  1. 《数据结构与算法之美》 <05>链表(下):如何轻松写出正确的链表代码?

    想要写好链表代码并不是容易的事儿,尤其是那些复杂的链表操作,比如链表反转.有序链表合并等,写的时候非常容易出错.从我上百场面试的经验来看,能把“链表反转”这几行代码写对的人不足 10%. 为什么链表代 ...

  2. 一步步教你轻松学支持向量机SVM算法之案例篇2

    一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  3. 一步步教你轻松学支持向量机SVM算法之理论篇1

    一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...

  4. 一步步教你轻松学K-means聚类算法

    一步步教你轻松学K-means聚类算法(白宁超  2018年9月13日09:10:33) 导读:k-均值算法(英文:k-means clustering),属于比较常用的算法之一,文本首先介绍聚类的理 ...

  5. 一步步教你轻松学KNN模型算法

    一步步教你轻松学KNN模型算法( 白宁超 2018年7月24日08:52:16 ) 导读:机器学习算法中KNN属于比较简单的典型算法,既可以做聚类又可以做分类使用.本文通过一个模拟的实际案例进行讲解. ...

  6. 轻松学JVM

    轻松学JVM(一)——基本原理 前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM ...

  7. WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)

    WebAPI调用笔记   前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...

  8. C# 中一些类关系的判定方法 C#中关于增强类功能的几种方式 Asp.Net Core 轻松学-多线程之取消令牌

    1.  IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口. public interface IAnimal { } public interface ID ...

  9. 目录---Asp.NETCore轻松学系列【目录】

    随笔分类 - Asp.NETCore轻松学系列 Asp.NETCore轻松学系列阅读指引目录 摘要: 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进 ...

随机推荐

  1. Running cells requires Jupyter notebooks to be installed

    /******************************************************************************* * Running cells req ...

  2. 执行shell脚本出错'\r': command not found

    在linux中执行脚本时出错 $'\r': command not found 错误原因是在脚本中有空行,如果脚本是在Windows下进行编辑之后上传到linux上去执行的话,就会出现这个问题. 因为 ...

  3. scroll-view

    scroll-view 中分别有上下竖向滑动和左右横向滑动之分,在这次项目中刚好需要用到横向滑动,但在测试过程中发现横向滑动没有了效果(静止在那里没移动过),经调试发现: 1.scroll-view ...

  4. SSM面试题

    一.Spring面试题 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心: 1.IOC/DI(控制反转/依赖注入 ...

  5. day11.3分页操作divmod

    # 分页显示 divmod(被除数,除数) INFO_LIST = [] for i in range(836): template = "第%s天,笨笨先僧 always be there ...

  6. 2018.5.4 Unix的五种IO模型

    阻塞非阻塞和异步同步 同步和异步关注的是消息通信机制,关注两个对象之间的调用关系. 阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态,关注单一程序. Unix的五种IO模型 以下基于Li ...

  7. 一个简单springboot搭建

    首先,新建一个maven项目,new maven project 然后打开pom.xml,引入需要的jar包,代码如下: <parent> <groupId>org.sprin ...

  8. 一张图看懂AI、机器学习和深度学习的区别

    AI(人工智能)是未来,是科幻小说,是我们日常生活的一部分.所有论断都是正确的,只是要看你所谈到的AI到底是什么. 例如,当谷歌DeepMind开发的AlphaGo程序打败韩国职业围棋高手Lee Se ...

  9. java项目---用java重命名文件(1星)

    package Demo; import java.io.File; public class FileRename { public static boolean Rename(String old ...

  10. 学习笔记TF065:TensorFlowOnSpark

    Hadoop生态大数据系统分为Yam. HDFS.MapReduce计算框架.TensorFlow分布式相当于MapReduce计算框架,Kubernetes相当于Yam调度系统.TensorFlow ...