C/C++
文章平均质量分 88
tianyunzqs
【纯干货分享,个人学习笔记】欢迎关注个人公众号:NLPer笔记簿
展开
-
类的前向声明与调用
类的声明与变量的声明类似,如:int a; // 定义一个变量或声明一个变量class A; // 声明一个类,类名为A注:声明一个类的时候,不占用任何存储空间(不知正确与否,看到网上好多人这么说。用sizeof试验时,sizeof(A)是不能通过编译的)。下面通过实例来进行说明类的前向声明与调用问题:#includeusing namespace std;cl原创 2015-07-09 22:06:13 · 724 阅读 · 0 评论 -
单链表(三)——链表的删除
/********************************************************************** 函数名称:linklist *DeleteLoc(linklist *head, int Loc)* 函数功能:在链表的指定位置删除结点* 参 数:head----链表的头结点 Loc-----需要删除的结点所在的位置,范围为1~N(N为原创 2015-09-13 09:55:06 · 807 阅读 · 0 评论 -
单链表(四)——链表的反转
/********************************************************************** 函数名称:linklist *ResverLinklist(linklist *head)* 函数功能:反转链表(逆置链表)* 参 数:head----链表的头结点* 返 回 值:反转链表后的链表的头结点* 说 明:顺序将每个节点移到原创 2015-09-13 09:58:42 · 437 阅读 · 0 评论 -
单链表(五)——链表的排序
/********************************************************************** 函数名称:linklist *SortLinklist(linklist *head)* 函数功能:链表排序* 参 数:head----链表的头结点* 返 回 值:按从小到大的顺序排序后的链表头结点* 说 明:冒泡排序方法*****原创 2015-09-13 10:00:41 · 703 阅读 · 1 评论 -
单链表(六)——判断链表是否含环
定理: 碰撞点p到连接点的距离 = 头指针到连接点的距离。 因此,分别从碰撞点、头指针开始走,相遇的那个点就是连接点。 定理的证明与分析: 假设甩尾(在环外)长度为 a(结点个数),环内长度为 b 。 则总长度(也是总结点数)为 a+b 。 从头开始,0 base 编号。 将第 i 步访问的结点用 S(i) 表示。i = 0, 1 ... 当 i原创 2015-09-13 10:03:56 · 552 阅读 · 0 评论 -
单链表(七)——判断两链表是否交叉
判断两链表是否交叉主要有以下三种方法:1、最简单的方法就是先顺序访问其中一个链表,在每访问一个节点时,都对另外一个链表进行遍历,看节点是否相等,直到找到一个相等的节点位置,如果链表长度分别是m,n 则时间复杂度为O(mn)2、我们可以知道如果两个链表有公共节点,那么该公共节点之后的所有节点都是两个链表所共有的,所以长度一定也是相等的,如果两个链表的总长度是相等的,那么我们对两个链表原创 2015-09-13 10:12:02 · 6227 阅读 · 0 评论 -
sizeof用法大总结(上)
首先需要明确的是sizeof是一个运算符,并不是一个函数,其次sizeof计算的是栈中对象所占的内存大小,所以对于全局变量和静态变量,sizeof就无法计算其所占内存大小。1、 类型及变量1.1、基本数据类型对于C/C++语言中各基本类型,结果如下: cout<<sizeof(char)<<endl; // 1 cout<<sizeof(short)<<endl;原创 2015-10-05 22:19:49 · 514 阅读 · 0 评论 -
sizeof用法大总结(下)
以下结论均是在32位系统VS2010下运行(关于类的部分是个人的初步理解,若不对,望指正!)6、 结构体及位域当使用sizeof计算结构体所占内存大小时,遵循字节对齐原则,而默认的字节对齐遵循以下原则:若结构体内的最大数据类型所占的内存大小小于计算机字长时,以结构体内最长数据类型为对齐单位进行字节对齐;若结构体内的最大数据类型所占的内存大小大于计算机字长时,以计算机字长为对齐单位原创 2015-10-06 16:08:12 · 459 阅读 · 0 评论 -
word2010加载MathType打开时显示“安全警告,宏已被禁用”解决办法
在word2010中加载MathType的时候,显示宏安全警告,经过多番百度与实验,还是自己摸索出来了,在此分享哈。根据https://www.howsci.com/diable-macro-warning-word.html的设置之后,MathType的功能被禁用了,完全没解决问题。PS: 在进行以下步骤的时候,请确保你已成功安装MathType,也即点击上图的原创 2016-04-08 19:33:02 · 57197 阅读 · 15 评论 -
基本排序方法之五——简单选择排序
简单选择排序(simple selection sort)又称为直接选择排序,属于选择类排序方法。简单选择排序方法的基本思想:第i趟排序从序列的后n-i+1个记录中选择一个值最小的记录与该n-i+1个记录的最前面那个记录交换位置,即与整个序列的第i个位置上的记录交换位置。如此下去,直到i=n-1,排序结束。简言之,每一趟排序从序列中未排好序的那些记录中选择一个值最小的元素,然后将其与这些为排好原创 2015-08-01 17:13:58 · 906 阅读 · 0 评论 -
单链表(二)——链表的插入
/********************************************************************** 函数名称:linklist *InsertLoc(linklist *head, int Loc, int val)* 函数功能:在链表的指定位置插入结点* 参 数:head----链表的头结点 Loc-----需要插入的结点所在的位置,原创 2015-09-13 09:51:24 · 598 阅读 · 0 评论 -
单链表(一)——链表的建立
建立单链表有两种方法:头插法和尾插法。1、头插法建立单链表1.1、基本思想1.生成一个结点,将读入的数据存放到新结点的数据域中;2.把新结点作为第一个表结点插到当前链表头结点之后,重复上述过程,直至输入结束标志为止。1.2、头插法建立单链表的过程(示意图如下图所示)1.建立链表的头结点head;2.建立新的结点p;3.给新节点的数据域赋值,将新结点的指针域指向hea原创 2015-09-13 09:39:38 · 1319 阅读 · 0 评论 -
public、private、protected三者访问权限解析
public、protected、private三者的访问权限原创 2015-06-05 22:15:23 · 1171 阅读 · 0 评论 -
基本排序方法之二——快速排序
快速排序(quick sort)是冒泡排序的一种改进,是C.R.A.Hoare于1962年提出的一种划分交换排序(partition exchange sorting),快速排序的平均时间性能是本系列博文所述排序算法中最好的。快速排序的基本思想:在待排序的n个记录中任取一个记录(通常取第一个记录),以该记录为基准,将当前的无序区划分为左右两个较小的无序子区,使左边的记录均小于基准值,右边的记录原创 2015-08-01 16:48:08 · 740 阅读 · 0 评论 -
基本排序方法之四——希尔排序
希尔排序(shell sort)又称缩小增量排序(diminishing increment sort),是希尔于1959年对直接插入排序进行改进后提出来的。希尔排序的基本思想:首先取一个小于n的整数d1作为第一个增量,把全部记录分为d1个组,所有间隔为d1的记录放在同一个组中,在各组内进行直接插入排序(也可采用冒泡排序等其他排序方法),这样一次分钟排序的过程称为一趟排序;然后取第二个增量d2原创 2015-08-01 17:08:41 · 604 阅读 · 0 评论 -
基本排序方法之六——堆排序
堆排序(heap sort)是J.Willionms在1964年提出的一种选择类排序方法,是在简单选择排序方法的基础上借助与完全二叉树的结构而形成的一种排序方法,是完全二叉树顺序存储结构的应用。堆排序的基本思想:根据原始记录的关键字序列建立初始堆,使得堆顶元素是关键字最大(最小)的记录,然后删除堆顶元素并将其保存到数组中。继续调整剩余的关键字序列使之重新构成一个新堆,再删除关键字次大(次小)的原创 2015-08-01 17:19:32 · 1062 阅读 · 0 评论 -
基本排序方法之一——冒泡排序及其改进
冒泡排序是一种典型的交换类排序方法。冒泡排序的基本思想:通过无序区中相邻记录关键字间的比较和位置的交换,使关键字最小的记录如气泡一般逐渐往上“漂浮”,直至“水面”。冒泡排序的C语言实现方法如下:int BubbleSort(int a[], int len){ int i, j, temp, CompareNum=0; for(i=0; i<len-1; i++)原创 2015-08-01 16:14:29 · 731 阅读 · 0 评论 -
排序分类基本介绍
1、排序的两大类根据排序过程中所使用的内、外存储器情况的不同,可以将排序分为内部排序(内排序)和外部排序(外排序)。内排序(internal sorting)是指在排序过程中将全部待排序记录存放在内存中进行处理的排序方法。外排序(external sorting)是指将部分数据放在外存中,在排序过程中借助内存逐步调整记录之间的相对位置(即排序过程中需要不断进行内存和外存之间的数据交换)原创 2015-08-01 15:19:51 · 926 阅读 · 0 评论 -
基本排序方法之三——直接插入排序
直接插入排序(straight insertion sort)又称简单插入排序,是指将一个记录插入到已排好序的序列中,得到一个新的、长度增一的序列。直接插入排序的基本思想:假设待排序的记录存放在数组r[1..n]中,初始时可以认为r[1]是一个有序的子序列,r[2..n]是无序子序列,从i=2到i=n依次将r[i]插入到当前的有序序列r[1..i-1]中,最终得到含有n个有序的序列。直接插原创 2015-08-01 16:56:28 · 585 阅读 · 0 评论 -
构造函数为什么不能是虚函数
转载地址:http://www.cnblogs.com/lixiaohui-ambition/archive/2012/08/28/2660708.html1.从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化转载 2015-07-24 21:29:20 · 519 阅读 · 0 评论 -
C/C++中实型的存储格式
实型数据又称为浮点型数据。实型数据可分为单精度实型(float型)和双精度实型(double型)。数据类型类型说明关键字占用字节取值范围精度(位)单精度浮点型float4±(3.4*10^-38 ~ 3.4*10^38)7双精度浮点型原创 2015-09-01 22:51:15 · 1916 阅读 · 0 评论 -
二叉树的各种操作
之前做过排序算法与单链表的总结(见前面的博文),现把二叉树的给补上。本文主要从二叉树的建立,二叉树结点个数统计,二叉树的遍历和二叉排序树几个方面进行介绍总结。1、二叉树的建立先建立二叉树的结点// 定义二叉树的结点typedef struct btreenode{ char data; // 数据域 struct btreenode *lchild; // 左孩子指针原创 2017-09-30 20:47:43 · 384 阅读 · 0 评论