本文是基于牛客网该岗位刷题遇到的知识点总结,可能知识点的连贯性不是很好,望见谅。
①红黑树
R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常高。红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
②数据结构
数据结构包括逻辑结构和存储结构。
逻辑结构包括集合、线性结构、树形结构、图形结构。
存储结构包括顺序存储结构、链式存储结构、索引存储结构、哈希存储结构。
“线性表”中的“线性”是逻辑结构的概念,是指
(1)开始结点和终端结点都是唯一的;
(2)除了开始结点和终端结点,其余结点都有且仅有一个直接前驱,有且仅有一个直接后继。
“循环链表”中的“链表”是存储结构的概念,是指
不要求逻辑上相邻的结点在物理上也相邻,结点间的逻辑关系是由附加的指针字段表示的。
线性结构:线性表(顺序表,链表),数组,栈,队列,循环队列
非线性结构:树,图,对维数组
逻辑结构:线性结构,非线性结构,集合
存储结构:顺序存储,链表存储,索引存储和散列存储、
③内存泄露问题
内存泄漏:创建的临时变量,在栈中,应该会由系统自动释放,所以应该是不存在内存泄漏的问题。
内存溢出:通俗理解就是内存不够,通常在运行大型软件或游戏时,软件或游戏所需要的内存远远超出了你主机内安装的内存 所承受大小,就叫内存溢出。此时软件或游戏就运行不了,系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件 后释放掉一部分内存又可以正常运行该软件。
栈溢出:属于缓冲区溢出的一种。栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大 小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。
④无向图
无向图是边没有方向的图,恰有n(n-1)/2条边的无向图称为无向完全图。
⑤前、中、后序遍历
前序遍历:根左右;中序遍历:左根右;后序遍历:左右根
⑥排序算法总结
排序方法 平均情况 最好情况 最坏情况 辅助空间 稳定性
冒泡排序 O(n^2) O(n) O(n^2) O(1) 稳定
选择排序 O(n^2) O(n^2) O(n^2) O(1) 不稳定
插入排序 O(n^2) O(n) O(n^2) O(1) 稳定
希尔排序O(n*log(n))~O(n^2) O(n^1.3) O(n^2) O(1) 不稳定
堆排序 O(n*log(n)) O(n*log(n)) O(n*log(n)) O(1) 不稳定
归并排序 O(n*log(n)) O(n*log(n)) O(n*log(n)) O(n) 稳定
快速排序 O(n*log(n)) O(n*log(n)) O(n^2) O(1) 不稳定
⑦线程并发问题
两个线程并发,具有一先一后、同时进行特点,考虑的情况多一些
⑧数据封装
C++通过类实现封装性,封装是面向对象编程中的把数据和操作数据的函数绑定在一起。
⑨通配符
*代表多个字符,例如abc.txt,可以用*.txt查找,?代表单个字符,同上例,可以用ab?.txt替代。
⑩拷贝构造函数被调用情况
一个对象以值传递方式传入函数体;
一个对象以值传递方式从函数返回;
一个对象需要通过另外一个对象进行初始化;