数据结构
LingLong_roar
多年机械师之身在校内,却着程序员之衣进社会;
有着前端之心,却行后端之事。
展开
-
链表的使用(VS2010中实现)
今天将给大家讲述链表的学习心得。学习数据结构,毋庸置疑链表必须学好,后面的栈、队列、树、图都是以链表为基础的;链表的种类很多,有单链表、双链表、循环链表、非循环链表;在此,我们以非循环单链表为例,来讲链表的创建、求长度、排序、插入和排序。1.链表定义 链表我的理解要包含以下特征:(1).由n个节点离散分配;(2).每个节点通过指针连接(3)每一个节点由一个前驱节点和一个后驱节点(...转载 2018-10-23 11:17:31 · 1882 阅读 · 0 评论 -
strlen和sizeof的区别
关于 strlen 与 sizeof 的区别:1. strlen 是函数,sizeof 是运算符。2. strlen 测量的是字符的实际长度,以'\0' 结束(不包含'\0' )。而sizeof 测量的是字符的分配大小,如果未分配大小,则遇到'\0' 结束(包含'\0' ,也就是strlen测量的长度加1),如果已经分配内存大小,返回的就是分配的内存大小。比如:char str[...转载 2019-09-29 21:57:07 · 32551 阅读 · 0 评论 -
整数的左移运算符和右移运算符
因为数字在内存中是以补码形式存在的,因此,对于移位运算,也是对补码进行操作。正数:首先正数的反码、补码都是本身,正数的左移就是高位补0,正数的右移就是低位补0。例如:对于20:原码:0001 0100反码:0001 0100补码:0001 010020<<2:0101 0000(80)20>>2:0000 0101(5)负数:对于负数的移位运...原创 2019-09-29 10:09:02 · 4022 阅读 · 0 评论 -
int 类型数据的最大值,最小值及其十六进制表示方式
用以下两行代码可以知道自己的电脑下,int数据类型的最大值,最小值cout << "int数据类型最大值:" << (numeric_limits<int>::max)() << endl; cout << "int数据类型最小值:" << (numeric_limits<int>::min)() <...原创 2019-09-28 12:05:15 · 34044 阅读 · 2 评论 -
关于二叉树的一些经常会遇到的题目
【1】知道一个数的其他度的数量,问树的叶子节点个数基本定义:度为0的结点成为叶子(leaf)或终端结点。总节点个数为:根节点+子节点根节点个数为1,子节点个数为20*4+10*3+1*2+10*1 = 122所以总结点个数为123个。只有叶节点度数为0,其他结点都有度数。由题意得其他结点总数为20+10+1+10 =41个故叶节点(终端节点)=123-41=82个。...原创 2019-09-27 15:14:36 · 237 阅读 · 0 评论 -
define和const的异同
const定义的是变量不是常量,只是这个变量的值不允许改变是常变量!带有类型。编译运行的时候起作用存在类型检查。define定义的是不带类型的常数,只进行简单的字符替换。在预编译的时候起作用,不存在类型检查。1、两者的区别(1) 编译器处理方式不同#define 宏是在预处理阶段展开。 const 常量是编译运行阶段使用。(2) 类型和安全检查不同#define 宏没有...转载 2019-09-26 16:03:59 · 250 阅读 · 0 评论 -
C++ static关键字
在程序中使用static变量1. 局部变量普通局部变量是再熟悉不过的变量了,在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴。编译器一般不对普通局部变量进行初始化,也就是说它的值在初始时是不确定的,除非对其显式赋值。普通局部变量存储于进程栈空间,使用完毕会立即释放。静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。且静态局部...转载 2019-09-11 12:53:49 · 112 阅读 · 0 评论 -
C++ const关键字
关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理,所以说const的存在一定有它的合理性,与预编译指令相比,const修饰符有以下的优点:1、预编译指令只是对值进行简单的替换,不能进行类型检查2、可以保护被修饰的东西,防止意外修改,增强程序...转载 2019-09-08 21:56:55 · 170 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(stati...转载 2019-09-03 16:02:43 · 117 阅读 · 0 评论 -
C++ 引用和指针的区别
指针和引用的相同点和不同点:相同点:都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。不同点:1 指针是一个实体,而引用仅是个别名;2 引用只能在定义时被初始化一次,之后不可变;指针可变;3 引用没有const,指针有const,const的指针不可变;(具体指没有int& const a这种形式,而const int&...转载 2019-09-07 10:50:47 · 105 阅读 · 0 评论