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