- 博客(10)
- 收藏
- 关注
原创 3.4 单向链表
单向链表单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。 一般我们会为单向链表加入一个head节点(以方便对链表操作),head节点指向单向链表的第一个节点,最后一个节点指向NULL,如下图所示...
2018-12-23 17:11:16
495
原创 3.3 链表的定义
链表前面我们讲的线性表的顺序存储结构。它是有缺点的,最大的缺点就是插入和删除时需要移动大量元素,这显然就需要耗费时间。能不能想办法解决呢?没错就是我们今天要讲的主角:链式存储结构-链表定义链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链...
2018-12-23 00:19:15
254
原创 3.2 顺序存储结构
顺序存储结构定义线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。 实现通过上面的定义,我们很容易想到数组,没错,我们可以用数组作为顺序存储结构的底层数据定义如下结构体#define MA...
2018-12-22 04:14:15
1172
原创 3.1 线性表的定义
线性表,从名字上你就能知道,是具有像线一样的表。线性表的定义线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。 线性表的相邻元素之间存在着序偶关系。如用(a1,…,ai-1,ai,ai+1,…,an)表示一个顺序表,则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。当i=1,...
2018-12-21 17:42:27
365
原创 2.2 算法的时间复杂度(重要)
我们知道设计的算法要有着高的效率,很明显,解决同一个问题,用的时间越少就表明这个算法相对来说越高效,那么我们如何度量一个算法的执行时间呢?我们很容易想到两种方法:1.事后统计方法 事后统计方法:这种方法主要通过设计好的测试程序和数据,利用计算机的计时器对不同的算法编制的程序的运行时间进行比较,从而确定算法效率的高低。这种方法明显有较大的缺点:(1)浪费时间。我们需要先把解决某个问题...
2018-12-20 15:01:08
510
原创 数据结构和算法(c/c++版)
本系列主要介绍常用的数据结构和算法(参考书籍《大话数据结构》),在接下来的时间内会不定期一章一章更新。。。目录第1章 数据结构先导课1.1开场白第2章 算法与算法的复杂度2.1 开场白2.2 算法的时间复杂度(重要)2.3 算法的空间复杂度第3章 线性表3.1 线性表的定义3.2 顺序存储结构3.3 链表的定义3.3 单链表3.4 栈3.5 ...
2018-12-19 23:26:01
1017
原创 数组名与指针的联系和区别(数组名不是指针,而是关于“数组类型”的一个对象或者说变量 )
关于数组名,先说一下我的结论吧1.数组名不是指针,它是“数组类型”的一个对象或者变量(就好比int i中的i,CString str当中的str)2.“数组类型”的对象可以隐式转化为指针(当它转化为指针时,实际上是转化为指向数组第一个元素的指针)先来看下面几个例子:-----------------------------------------------------------...
2018-09-27 01:11:06
2458
1
原创 c/c++中的sizeof运算符
在工作中,我们常常碰到需要使用sizeof的场合,例如:使用内存“拷贝函数memcpy”,计算数组元素的个数等。。但是你真的了解sizeof的用法吗?请看下面的题目(摘自《程序员面试宝典 第5版》) -----------------------------------------------------------------------------------例题1:下面的代码...
2018-09-25 00:37:57
368
原创 对C++虚函数的理解
以前只知道虚函数是由一个叫作“虚函数表”的东西实现,但是一直不知道具体是怎么实现,今天看到csdn学院上c++虚函数的原理时,有几个问题,还是不怎么清楚,只好做一些测试,具体让我产生疑问的截图如下: 从上面的截图里,主要有2个问题1.按上图所说,编译器会往类中插入“指向虚函数表的指针(__vfptr)”,那么如果这个类所生成几个不同的对象,这几个对象的__vfptr都相同吗?2...
2018-09-18 21:46:59
625
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人