08 2018 档案
摘要:超好的博客,总结很全面: https://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html
阅读全文
摘要:/*并查集*/ #include int *a; int *sz; int count; //the number of connected component //union two connected components with weights void union_two_points(int p, int q) { int i = root(p); int j = ro...
阅读全文
摘要:< > 1.strcpy 细节是: (1)判断地址是否为空; (2)参数只有两个地址,没有拷贝的长度。拷贝到'\0‘时就会终止,要保证最终dst末尾是'\0'; (3)要保证目标字串的长度足够,能够容纳原串的长度; (4)因为拷贝是dst会移动,而最终要返回的是拷贝后字符串的起始地址,因此要先保存d
阅读全文
摘要:1.栈有两种实现方式:链表和可变化大小的数组 链表优点:每次push和pop得时间是一定的,总的操作时间比数组大; 数组优点:在扩张/压缩数组的插入/删除花费时间大,但均摊下来每次插入和删除都比链表快速,显得总的操作时间小。 Q:何时采用链表方法? A:飞机场停飞机,网络中源源不断收到数据包。 因为
阅读全文
摘要:BinTree Insert( BinTree BST, ElementType X ) { if( !BST ){ /* 若原树为空,生成并返回一个结点的二叉搜索树 */ BST = (BinTree)malloc(sizeof(struct TNode)); BST->Data = X; BST->Left = BST->Right =...
阅读全文
摘要:#define RED 0 #define BLACK 1 typedef struct RedBlackNode{ ElementType Data; RedBlackNode *Left; RedBlackNode *Right; int colour; }; typedef struct RedBlackNode* Root; typedef Root RedBlack...
阅读全文
摘要:typedef struct AVLNode *Position; typedef Position AVLTree; /* AVL树类型 */ struct AVLNode{ ElementType Data; /* 结点数据 */ AVLTree Left; /* 指向左子树 */ AVLTree Right; /* 指向右子树 */ int H...
阅读全文
摘要:#define MAXTABLESIZE 100000 /* 允许开辟的最大散列表长度 */ typedef int ElementType; /* 关键词类型用整型 */ typedef int Index; /* 散列地址类型 */ typedef Index Position; /* 数据所在位置与散列地址是同一类型 */ /* 散列单元状态类型,分别对应:...
阅读全文
摘要:<................................结构体..................................> 1.结构体的赋值? 答: C语言中对结构体变量的赋值或者在初始化或者在定义后按字段赋值。 方式1:初始化 或 GNU C中可使用另外一种方式: 或 方式2:
阅读全文
摘要:<.....................................预处理......................................> 1.什么是预编译?何时需要预编译? 答: 预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令
阅读全文
摘要:就一面,感觉挂掉了,因为直接被送客走人,在我面试之前有看到人直接说下午1点半二面 语言(我就C用的多) 1.指针指向非法地址,指向0地址; 2.malloc 和new 区别; 3.C++多态实现; 4.如何用C实现对象,多态,继承。 数据结构: 1.最大堆与最小堆是什么; 2.简述红黑树; 3.如何
阅读全文
摘要:7.1 系统模型 定义:多个进程竞争一定数量的资源,某个进程申请资源,若此时该资源不可用,则进程进入等待状态。若所申请的资源被其他等待进程占用,则该等待进程可能再也不法改变其状态。 进程使用资源的顺序: (1)申请,若申请不能立即被允许,则申请进程必须等待直至获得资源;(若进程所申请的资源正被其他进
阅读全文
摘要:个人对k的意义的理解:假设k是某一定值,对于每一次i,j循环,我们都只考虑加入第k个节点对D[i][j](从i到j最短路径)的影响,因为前k-1个节点已经考虑过了。 所以D[i][j] = D[i][k] + D[k][j], 其实D[i][k]与D[k][j]代表的是考虑前k-1个节点过后的最短路
阅读全文
摘要:适用于有向单源最短路径图: 实质:对集合S进行扩大,直至无法扩大,每收集一个点d至集合S,对与该点d直连的点在dist[]中的路径值进行更新。 S = {源点s + 已经确定了最短路径的顶点vi}; 对任一未收录的顶点vi,定义dist[v]为s到v的最短路径长度,但该路径仅经过S中的顶点。 Q1:
阅读全文
摘要:9.1 背景 虚拟地址空间:进程在内存中存放的逻辑视图。如图所示。 虚拟内存:是一种内存管理技术,它会使程序自己认为自己拥有一块很大且连续的内存,然而,这个程序在内存中不是连续的,并且有些还会在磁盘上,在需要时进行数据交换 。 允许随着动态内存分配,堆向上生长;允许随着子程序的不断调用,栈向下生长。
阅读全文
摘要:第四章 连接 没有看好,需要回过头再看 4.1 static修饰符 第五章 库函数 暂且跳过 第六章 预处理器(宏的总结) 6.1 宏定义中不能有空格 但是调用不受空格影响 6.2 宏非函数,建议定义时把变量与整体用括号括起来,这样更加安全,例如: 同时,不要使用类似 这样方式,因为这样a++可能执
阅读全文
摘要:https://blog.csdn.net/nawuyao/article/details/52703384 一个非常好的总结:https://www.jianshu.com/p/d254b138de03 内存方面的概念总结:https://blog.csdn.net/oMengLiShuiXian
阅读全文
摘要:这里先将搜集到的题目列出来,日后一一精细得写完。 https://blog.csdn.net/u013408431/article/details/62442670 https://blog.csdn.net/tzs_1041218129/article/details/52134226 https
阅读全文
摘要:2018年8月30日补充: 看了普林斯顿算法中关于堆的实现,感觉更加形象生动,补充如下: 堆排序是我们所知的唯一能够同时最优地利用空间和时间的方法 在最坏的情况下也能保证使用2NlgN次比较和恒定的额外空间。 复杂度分析:O(nlogn):第一个for循环,初始化堆,为O(n),第二个for循环为O
阅读全文
摘要:直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。 设数组为a[0…n-1]。 1. 初始时,数组全为无序区为a[0..n-1]。令i=0 2.
阅读全文
摘要:该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排
阅读全文