
每天学习亿点点系列
文章平均质量分 67
一个数学不怎么好的程序员
在虚空中,你一天都不能渡过
展开
-
C语言重点篇:详解程序环境和预处理
C语言重点篇:详解程序环境和预处理程序环境翻译环境编译预编译编译汇编链接执行环境(运行环境)预编译(预处理)预定义符号#define定义标识符#define定义宏#define定义的规则#和##的用法宏参数的副作用宏和函数的对比命名约定#undef命令行定义条件编译文件包含程序环境大家是否想过从我们编写的代码到最后在屏幕上打印的结果,这中间都经历了些什么了?其实,在ANSI C(标准C)的任何一种实现中,都存在两个不同的环境,即翻译环境和执行环境。翻译环境,在这个环境中,代码被转换为可执行的机器指原创 2021-08-25 19:00:39 · 966 阅读 · 45 评论 -
【每天学习亿点点系列】——栈和队列OJ题
????【每天学习亿点点系列】——栈和队列OJ题1.用队列实现栈图解代码实现2.用栈实现队列图解代码实现这两题的对比3.循环队列用数组还是链表实现注意点1.如果判断为空还是为满了?2.注意索引越界的问题解决方法代码实现1.用队列实现栈图解既然要用两个队列实现栈,那就肯定会跟队列的性质有关系,肯定是来回换来换去,下面我们就来看看这个过程。代码实现typedef struct { Queue* q1; Queue* q2;} MyStack;/** Initialize原创 2021-08-22 13:57:04 · 546 阅读 · 19 评论 -
【每天学习亿点点系列】——栈OJ题:有效的括号
????【每天学习亿点点系列】——栈OJ题:有效的括号题目解决思路代码实现图解代码段题目解决思路第一次做这个题目时肯定是没有思路的,也不会想栈的方向去想,但当你有了一定经验以后,你会发现它比配时有些符合栈的特点,它后进先出的特点正好可以帮助我们完成这一题:利用栈的特点,我们遇到数组中的左括号就入栈,直到此时它遇到第一个右括号,那么出栈顶的数据,此时不正是出的距离刚刚那个右括号离的最近的括号吗,如果比配的话,就继续迭代下去。代码实现至于这个代码里面栈的实现,就不放在这篇博客里了,不熟练的可以原创 2021-08-19 16:54:56 · 334 阅读 · 13 评论 -
【每天学习亿点点系列】——重温栈和队列
【每天学习亿点点系列】——重温栈和队列????【每天学习亿点点系列】——重温栈和队列栈的实现顺序表实现栈头文件以及测试部分代码各个接口的实现1.初始化2.栈的插入3.栈的删除4.栈顶取出数据5.栈里面元素的打印6.记录栈中元素个数7.判空8.栈的销毁单链表实现头文件以及测试部分代码各个接口的实现1.栈的插入2.栈里面元素的打印3.删除栈顶的节点4.取出栈顶的数据5.判空6.记录栈中元素个数7.销毁队列单链表(没有用结构体包裹)来实现头文件以及测试部分各个接口的实现1.队列的插入2.出队列3.删除4.判空5.原创 2021-08-19 16:51:53 · 240 阅读 · 9 评论 -
【每天学习亿点点系列】——单链表OJ题
????【每天学习亿点点系列】——单链表OJ题1. 链表的回文结构题目方法一:翻转后半段,与前半段对比代码实现方法二:数组法(不推荐)代码实现2.相交链表题目解决方法代码实现3.环形链表解决方法代码实现1. 链表的回文结构题目方法一:翻转后半段,与前半段对比如果在你写完链表寻找中间节点,和链表翻转后再来写这题,就选的很轻松,因为这就是那两题的考察。你想想是不是,如果你找到中间节点,再翻转一下后半部分,与前半部分一对比,如果都相等则是回文。代码实现/*struct ListNode {原创 2021-08-17 21:16:07 · 298 阅读 · 6 评论 -
【每天学习亿点点系列】——环形链表这些点你思考过吗?
????【每天学习亿点点系列】——环形链表这些点你思考过吗?题目证明方法一:利用证明的猜想来实现代码实现代码二:转化为两个链表找相交节点的问题代码实现题目在写这题之前,最好先要知道如果判断一个链表是不是环形链表,如果它都不是环形链表就更谈不上找入环节点了,至于这一点,读者可以看看我之前的博客,里面有讲解过然后判断。证明要想更快的解决这题,首先我们要正面一个猜想,证明过程如下:方法一:利用证明的猜想来实现代码实现Node* slow = head; Node* fas原创 2021-08-17 21:15:30 · 241 阅读 · 12 评论 -
【每天学习亿点点系列】——重温双向带头循环链表
????【每天学习亿点点系列】——重温双向带头循环链表头文件以及测试文件的实现各个接口的实现1.初始化2.创建节点3.尾插4.头插5.尾删6.头删7.打印8.查找9在任意位置之后插入10.在任意位置之前插入11.记录节点个数12.在任意位置之后删除13.在任意位置之前删除14.删除当前位置15.判空16.销毁注意点1.双向链表要初始化这个接口的,不同与单链表2.带个哨兵位,解决插入的问题3.注意赋值时的先后顺序4.删除时要把节点free掉,同时要注意写法5.判空与以往不同,因为有哨兵位6.不要像释放顺序表一原创 2021-08-17 21:14:44 · 922 阅读 · 8 评论 -
【每天学习亿点点系列】——单链表OJ题
????【每天学习亿点点系列】——单链表OJ题1.反转单链表题目方法一:原地改变原链表的指向代码实现方法二:头插法图解头插法代码实现方法三:递归代码实现2. 链表中间节点题目方法一:记录总共多少个节点,然后找到它的一半的那个节点实现代码方法二:快慢指针代码实现1.反转单链表题目方法一:原地改变原链表的指向这种方法很容易理解,实现也比较方便,只需要用三个指针,分别为前一个位置,当前位置,后一个位置来完成就可以实现代码实现struct ListNode* reverseList(struct原创 2021-08-16 21:45:29 · 710 阅读 · 16 评论 -
【每天学习亿点点系列】——重温单链表
????【每天学习亿点点系列】——重温单链表头文件以及测试部分的代码单链表各个接口的实现1.尾插2.尾删3.打印4.头插5.头删6.查找7.在任意位置之前插入8.在任意位置之后插入9.删除当前位置10.删除任意位置的前一个节点11.删除任意位置的后一个节点12.销毁13.判空注意点1.单链表的实现方式里面不能用一级指针接收的方式来实现也不可能做的到2.单链表不需要初始化这个接口3.尾节点如何解决的问题(悬疑问题)4. free时注意函数之间可能会有影响(悬疑问题)5.很多接口都要注意分类讨论头文件以及测试原创 2021-08-14 20:18:36 · 678 阅读 · 18 评论 -
【每天学习亿点点系列】——OJ203题:移除链表元素
????【每天学习亿点点系列】——OJ203题:移除链表元素题目思路代码实现注意点1. 不要以为cur就是head节点反例2.特殊情况找第一个不为val节点时当nnext为空指针时,不能再对它访问了3.在你找第一个不为val的节点时要一起移动题目思路有了前面顺序表和oj题的练习,像这种题一看三指针一定可以解决。我们用三个指针:pre记录当前位置的前一个位置的,以便删除当前位置后重新连起来链表;cur记录当前位置,判断是否为val的值,是则删除节点,不是则往后移动(一起往后移动);nnext(为了不原创 2021-08-14 20:18:08 · 638 阅读 · 10 评论 -
【每天学习亿点点系列】——重温顺序表
????【每天学习亿点点系列】——重温顺序表头文件,以及测试部分的代码顺序表各个接口的功能实现1.初始化2.尾插3.打印4.尾删5.头插6.头删7.判空8.查找9.在任意位置之前插入10.在任意位置之后插入11.在任意位置之前删除12.在任意位置之后删除13.销毁注意点1.有删除的接口不要忘记断言是否为空2.注意元素移动,防止覆盖3.整形提升的问题头文件,以及测试部分的代码我首先先把头文件(函数的声明,以及结构体的定义),测试部分的代码亮出来,以便下面看各个部分具体实现的时候更加清晰。SeqLis原创 2021-08-13 19:39:41 · 194 阅读 · 6 评论 -
七夕节限定——单身狗问题(送给七夕依然单身的你们)
????【每天学习亿点点系列】——七夕节:单身狗问题单身狗问题解决思路代码实现回头再看题单身狗问题马上要过七夕节了,不知道各位小伙伴是已经有约了?还是继续和代码做伴了?下面我们来看看这个单身狗问题:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。如果想解决这个问题其实有很多方法,今天我们在这里介绍一种比较巧妙的方法:异或。解决思路找出一个只出现过一次的数字的问题处理方法就是找一个数字把里面所有的数字都异或一遍,利用异或两次等于没异或原创 2021-08-13 19:38:45 · 388 阅读 · 0 评论 -
【每天学习亿点点系列】——重温动态通讯录
????【每天学习亿点点系列】——重温动态通讯录实现部分需要注意的地方1. 不要轻易用size2.传参一定要注意3.其实很多通讯录的这个接口都是有问题的,你知道吗?悬念问题由于之前已经写过一次通讯录了,这次正好遇到一个写通讯录的题目,抱着看看自己是否还能独立写出来的疑问,又重温了一下通讯录实现部分contact.h#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>#include&原创 2021-08-12 20:50:33 · 7878 阅读 · 4 评论 -
【每天学习亿点点系列】——常见库函数的模拟实现
????【每天学习亿点点系列】——常见库函数的模拟实现1.strlen做什么用的模拟实现方法一:计算器的方式方法二:递归方法三:指针减指针2.strcpy做什么用的模拟实现方法一:逐个赋值过去优化方法一3.strcmp做什么用的模拟实现4.strcat做什么用的模拟实现这段bug你找的出来吗?原因及解决方法5.strstr做什么用的模拟实现三指针法6.memcpy做什么用的模拟实现7.memmove做什么用的模拟实现1.strlen做什么用的这时就要翻看MSDN了,在里面可以查到每个库函数的具体用法原创 2021-08-11 23:35:03 · 401 阅读 · 19 评论 -
【每天学习亿点点系列】——杨氏矩阵,字符串左旋,字符串旋转结果
????【每天学习亿点点系列】——杨氏矩阵,字符串左旋,字符串旋转结果题1.杨氏矩阵解决思路代码实现题2.字符串左旋解决思路方法一:逐个左旋代码实现方法二:拼接法代码实现方法三:三次逆序法代码实现题目3.字符串旋转结果解决思路方法一:利用方法二来实现代码实现方法二:重复法(题目二也可以利用此方法解决)代码实现题1.杨氏矩阵有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。要求:时间复杂度小于O(n)解决思路下面是一个杨氏矩阵:如原创 2021-08-10 17:12:51 · 414 阅读 · 12 评论