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个节点
求链表的中间节点
Chapter07 链表(下):如何轻松学出正确的链表代码?的更多相关文章
- 《数据结构与算法之美》 <05>链表(下):如何轻松写出正确的链表代码?
想要写好链表代码并不是容易的事儿,尤其是那些复杂的链表操作,比如链表反转.有序链表合并等,写的时候非常容易出错.从我上百场面试的经验来看,能把“链表反转”这几行代码写对的人不足 10%. 为什么链表代 ...
- 一步步教你轻松学支持向量机SVM算法之案例篇2
一步步教你轻松学支持向量机SVM算法之案例篇2 (白宁超 2018年10月22日10:09:07) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...
- 一步步教你轻松学支持向量机SVM算法之理论篇1
一步步教你轻松学支持向量机SVM算法之理论篇1 (白宁超 2018年10月22日10:03:35) 摘要:支持向量机即SVM(Support Vector Machine) ,是一种监督学习算法,属于 ...
- 一步步教你轻松学K-means聚类算法
一步步教你轻松学K-means聚类算法(白宁超 2018年9月13日09:10:33) 导读:k-均值算法(英文:k-means clustering),属于比较常用的算法之一,文本首先介绍聚类的理 ...
- 一步步教你轻松学KNN模型算法
一步步教你轻松学KNN模型算法( 白宁超 2018年7月24日08:52:16 ) 导读:机器学习算法中KNN属于比较简单的典型算法,既可以做聚类又可以做分类使用.本文通过一个模拟的实际案例进行讲解. ...
- 轻松学JVM
轻松学JVM(一)——基本原理 前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM ...
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
WebAPI调用笔记 前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...
- C# 中一些类关系的判定方法 C#中关于增强类功能的几种方式 Asp.Net Core 轻松学-多线程之取消令牌
1. IsAssignableFrom实例方法 判断一个类或者接口是否继承自另一个指定的类或者接口. public interface IAnimal { } public interface ID ...
- 目录---Asp.NETCore轻松学系列【目录】
随笔分类 - Asp.NETCore轻松学系列 Asp.NETCore轻松学系列阅读指引目录 摘要: 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进 ...
随机推荐
- Zookeeper原理、安装、基本使用和API
ZooKeeper ZooKeeper是一种分布式协调服务, 解决应用程序的分布式带来的问题. 1 分布式应用 分布式应用可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的 ...
- register form code(2nd week blog)
register form code(2nd week blog) 注册 用户名: 密码: 确认密码: 邮箱: 电话: 性别: 男 女
- 锋利的jQuery初学(2)
js与jq事件处理程序区别: 1,事件源: document.getElementById('id'); $("#id") 2,事件: document.getElem ...
- [Python学习笔记] turtle库的基本使用
turtle库常用函数 引入turtle模块 import turtle turtle的绘图窗体 #setup()设置窗口大小及位置#setup()可省略turtle.setup(width,heig ...
- 使用JenKins实现自动执行python脚本
1.使用Jenkins创建一个工程,工程主要配置项参照下图,其他配置项恢复默认 2.工程配置完成之后,点击[立即构建],执行完成后进入到控制台查看是否执行成功.
- 用vs2010打开使用vs2013升级后的WP工程
项目在win7+vs2010的环境中建立的,后来在win8.1+vs2013的环境下修改和完善: 但是所有功能实现后发现wp7项目在使用vs2013打开后因为单向升级的原因,项目只能被编译为wp8项目 ...
- 服务程序在c#中的写法
1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A. 2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看 ...
- LOJ 2548 「JSOI2018」绝地反击 ——二分图匹配+网络流手动退流
题目:https://loj.ac/problem/2548 如果知道正多边形的顶点,就是二分答案.二分图匹配.于是写了个暴力枚举多边形顶点的,还很愚蠢地把第一个顶点枚举到 2*pi ,其实只要 \( ...
- 第一章 XAML概览
1.1 XAML是什么? XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言.也就是说在开发一个应用程序时,我们可 ...
- C# partial 关健字说明
参考:http://blog.csdn.net/niemeiquan/article/details/7801803 1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型允许我们将一个 ...