双向链表的增删改查

双向链表,我们曾经拿了一幅非常形象的图片来形容他,就像几个人手拉手围成一个圈一样。在我们代码中的呈现就是每个节点都有一个指向下一个节点的指针,同时也有一个指向上一个节点的指针。就因为新增了这个指向上一个节点指针的特性,它解决了单向循环链表的诸多问题,如下: 单链表的结点都只有一个指向下一个结点的指针 单链表的...

循环链表解决约瑟夫问题

循环链表的存在很难想象他的应用范围到底是哪里,本文主要介绍的是通过循环链表处理解决约瑟夫问题,让大家更深刻的理解循环链表的使用和应用场景。 例题:n 个人围成一个圆圈,首先第 1 个人从 1 开始一个人一个人顺时针报数,报到第 m 个人,令其出列。然后再从下一 个人开始从 1 顺时针报数,报到第 m 个人,再令...

循环链表的增删改查

循环链表与单向链表十分相似,两者唯一不同之处就是,循环链表的尾节点的next属性指向了链表的首节点(非头节点,头节点是没有数据的,头节点的下一个有数据的节点我们称为首节点)。他的表现形式有常见的两种,如下图: 一种是上面我们说的,而另外一种,则是将尾节点的next指向了头节点,这种做法不是方便,所以用的比较少...

线性表链式存储

上文中我们介绍了线性表顺序储存的方式,并给大家画了一幅比较详细的图(虽然看着比较凌乱),本文介绍的是数据储存的另外一种方式“链式储存”,这相当于我们之前提到过的单向链表,但是,本文与上一篇文章一样,都将数据的储存和算法进行了分离。这才是我们真正应该晋级了解的东西,如果只是一个单向链表,不足以我们耗费这么多精力。 ...

线性表顺序储存

线性表,是一个或多个数据元素的集合,数据之间是连续的一段内存。线性表的特性如下。 数据元素之间是有顺序的 数据元素个数是有限的 数据元素的类型必须相同 以下代码中包含了线性表的增删改查的实现,并且实现了数据结构和算法的分离,使任何数据类型,都可以通过我们编写的线性表类来储存。中间发生的变化在代码后面一幅图中做了...

cocos2dx 入口分析

为了理解多态的进一步应用,老师带着我们简单分析了一下cocos2dx的入口,深刻的体会到了虚函数和类静态成员变量的作用。以此给大家分享一下这个过程。 打开cocos2dx的main.cpp文件,我们可以看到如下代码: #include “main.h”#include “AppDelegate.h”#incl...

自实现 MyString 类

自实现 myString 类主要目的是剖析系统内部的 string 类的一些实现方法以及加强对类封装、运算符重载等特性的掌握。其中包含了几项非常重要的功能实现。 使用构造器创建对象。 拷贝构造器创建对象。 赋值运算符重载构造对象。 []运算符重载构造对象数组。 ==运算符重载判断对象是否相等。 +运算...

STL 常用方法集合

我本想将 STL 中各种容器的实现方法和作用全部写一遍,然后每种容器都发一篇文章,但后来发现这样做的意义不大,在 MSDN 或其他一些帮助文档中,他们比我写的要详细,其实我只需要记住每种容器的常用方法,和在什么场合选择合适的容器。下面这张表是我这里的一些常用方法集合。备用参考。

iomanip 流输入输出格式控制

在 C 中,我们使用 printf 输出内容时,可以使用多种格式控制方法,比如 %x %d %f %p 等等,但在 C++ 的io流输入输出的类中,我们找不到这些方法也不知道如何实现这些功能了。本文就介绍一些 C++ 中,io流输入输出格式控制的函数。 #include #include  using name...

C++ 读写文本文件和二进制文件

在 C 中,我们通过 FILE 结构体生成的指向 FILE 结构体的指针来操作文件。其提供了诸如 fgetc、fgets、feof等等函数,在 C++ 中重新封装了操作文件的方法,其实现在 iostream 派生的 fstream 中,实际内部实现基本原理与 C 相同。下面就分别介绍下操作文本文件和二进制文件的方...