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

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

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

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

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

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

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

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

技巧五:举例画图

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

单链表反转

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. Zookeeper原理、安装、基本使用和API

     ZooKeeper ZooKeeper是一种分布式协调服务, 解决应用程序的分布式带来的问题.   1 分布式应用 分布式应用可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的 ...

  2. register form code(2nd week blog)

    register form code(2nd week blog) 注册 用户名: 密码: 确认密码: 邮箱: 电话:     性别: 男 女

  3. 锋利的jQuery初学(2)

    js与jq事件处理程序区别: 1,事件源:   document.getElementById('id');   $("#id") 2,事件:   document.getElem ...

  4. [Python学习笔记] turtle库的基本使用

    turtle库常用函数 引入turtle模块 import turtle turtle的绘图窗体 #setup()设置窗口大小及位置#setup()可省略turtle.setup(width,heig ...

  5. 使用JenKins实现自动执行python脚本

    1.使用Jenkins创建一个工程,工程主要配置项参照下图,其他配置项恢复默认 2.工程配置完成之后,点击[立即构建],执行完成后进入到控制台查看是否执行成功.

  6. 用vs2010打开使用vs2013升级后的WP工程

    项目在win7+vs2010的环境中建立的,后来在win8.1+vs2013的环境下修改和完善: 但是所有功能实现后发现wp7项目在使用vs2013打开后因为单向升级的原因,项目只能被编译为wp8项目 ...

  7. 服务程序在c#中的写法

    1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A. 2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看 ...

  8. LOJ 2548 「JSOI2018」绝地反击 ——二分图匹配+网络流手动退流

    题目:https://loj.ac/problem/2548 如果知道正多边形的顶点,就是二分答案.二分图匹配.于是写了个暴力枚举多边形顶点的,还很愚蠢地把第一个顶点枚举到 2*pi ,其实只要 \( ...

  9. 第一章 XAML概览

    1.1 XAML是什么? XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言.也就是说在开发一个应用程序时,我们可 ...

  10. C# partial 关健字说明

    参考:http://blog.csdn.net/niemeiquan/article/details/7801803 1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型允许我们将一个 ...