随笔分类 - C/CPP
1. C->C++
2. C->Linux->Ubuntu
3. BOOK: The C Programming Language
4. BOOK: The C++ Programming Language
摘要:顺序栈的基本模型 完整的C代码 点击查看代码 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> typedef struct StackNode { /*metadata node of stack*/ int* data; //
阅读全文
摘要:1.循环队列的基本模型 1.1 此模型采用的队列判空条件是rear == front为真 1.2 此模型采用的队列已满条件是(rear+1)%maxsize == front为真,因此有一个数组单元(也就是front指向的数组单元)不可使用 1.3 可以在队列结点加一个成员表示最近一次对队列的操作为
阅读全文
摘要:防止手生,就算一天只写一行代码也是有意义的 1.C代码 #include <stdio.h> void printTable(); int main(int argc, char* argv[]) { printTable(); return 0; } void printTable() { /*p
阅读全文
摘要:优先级很低,往往需要加一个括号 在求二叉树的高度遇到的问题,属于对C不熟悉导致的bug // ret的值为20,ret1的值是22 int a = 10, b = 20; int ret = 2 + a>b?a:b; // 先计算2+a, 2+a>b为假,因此ret的值是20 int ret1 =
阅读全文
摘要:一、二叉排序树的定义 左子树所有结点的值均小于根结点的值 右子树所有结点的值均大于根节点的值 左子树和右子树也是二叉排序树 1.二叉排序树的结点结构 typedef struct BSTNode { /*二叉排序树的结点结构*/ int value; struct BSTNode *left; st
阅读全文
摘要:1.创建二维数组 int** create(const int row, const int col) { /*根据参数row和col,创建一个矩阵,返回指针*/ int** matrix = (int**)malloc(sizeof(int*) * row); for (int i = 0; i
阅读全文
摘要:代码如下(使用了前缀数组和优化:时间复杂度O(m*n)->O(m+n)) 在ccf csp的模拟系统提交的结果一直是错误而且是0分 在本地运行正确 使用前缀和数组,增加了内存空间的占用,但是没有数量级的提升,时间复杂度由O(m * n)降为O(m+n) 易错点:(x,y) ->(r, theta)转
阅读全文
摘要:代码如下 此算法是暴力求解算法,时间复杂度O(mn),只能得80分,而且代码在模拟系统里一直提交错误(评判系统应该有bug),但在本地可以正常运行* #include <stdio.h> #include <stdlib.h> #include <math.h> typedef struct Ope
阅读全文
摘要:一、线段树的特点 1.没有度为1的结点,只有度为0和2的结点 2.线段树的叶子结点对应于数组中的一个元素 3.线段树是一种静态结构,即可以进行查询和更新操作,但是不能进行插入和删除操作 4.线段树和对应的数组相比,求i~j号元素之间所有元素的和,最小值,最大值等,具有较高的查询和更新效率(O(log
阅读全文
摘要:第一题第二题一般比较简单,需要对编程达到熟悉的要求即可,不要求了解过多的数据结构和算法 使用C提交一直编译错误,相同的代码使用C++提交却能通过,真是醉了 坐标变化(其一)题目描述 1.需要创建一个操作符矩阵,行和列分别是n和2 2.需要创建一个操作数矩阵,行和列分别是m和2 3.求出操作符矩阵所有
阅读全文
摘要:创建一棵完全二叉树(基于一个数组,用递归算法创建一颗二叉树)(创建方法仅适用于完全二叉树) 层序遍历完全二叉树(遍历算法适用于所有二叉树):利用队列FIFO的性质 中序遍历完全二叉树(递归方式,遍历算法适用于所有二叉树) 先序遍历完全二叉树(递归方式,遍历算法适用于所有二叉树) 后序遍历完全二叉树(
阅读全文
摘要:1.void类型指针简介 void类型的指针又被称为泛型指针,通用型指针 void类型的指针:指针指向的内存地址中的数据的类型未知 其他所有类型的指针都可以转换为void类型的指针,而且不需要强制类型转换(编译器会隐式/自动类型转换) void类型的指针也可以转换为任意类型的指针,需要强制类型转换(
阅读全文
摘要:函数指针的概念 顾名思义,函数指针就是指向函数的指针,该指针的值是函数的入口。下面的代码时函数指针的一个基本实例。 #include <stdio.h> int max_(int a, int b); int max1_(int (*func_p)(int, int), int a, int b);
阅读全文
摘要:也许一个不兼容的指针可以访问变量 #include <stdio.h> #include <stdlib.h> typedef struct father { int age; char* name; } father; typedef struct student { int age; doubl
阅读全文
摘要:1. 所谓override,就是子类中重新实现了父类中的某一方法(子类和父类的同一个方法的方法体不同) 2. 所谓多态,最显著的一个特点就是父类指针指向不同的子类对象时,运行同一个方法会有不同的行为 3. C语言模拟继承时,父类对象必须是子类对象的第一个成员 4. 理解了C的父类结构体指针子类结构体
阅读全文
摘要:### 1.[cppreferecne][1]  ### 2.[stackoverflow][2] 的优缺点(以int &b = a;为例) * 1.引用的底层是指针:(b本质上是指向a的指针),但是程序员可以把引用b当作对象a的别名,也就是可以当作一个普通的变量使用。 * 2.引用有更加安全和高效的特性:b只能指向a,也就是说,b不能再引用其他的对象了,这一点和指针
阅读全文
摘要:## 记录四本C/C++的经典书籍。最经典的莫过于1988年出版的《The C Programming Language》第二版 ### 1.C #### 1.1 零基础:C Primer Plus, Sixth Edition,作者:Stephen Prata, 2013年出版,涵盖C11标准 !
阅读全文
摘要:### C语言定义并初始化一个二维数组(利用二级指针) #### 1.代码如下 ```cpp #include #include int main() { // m, n表示数组的行数和列数 int m, n; scanf("%d %d", &m, &n); // p是一个二级指针,使用malloc
阅读全文
摘要:### C语言定义并初始化一个二维数组(利用指针数组),可以实现二位数组的每一行的元素个数不同 #### 1.代码如下 ```cpp #include #include int main() { // arr是一个指针数组,即这个数组的所有元素都是指针,每一个元素都指向一个int型数组,每一个int
阅读全文

浙公网安备 33010602011771号