- 博客(11)
- 收藏
- 关注
原创 编译链接原理
gcc完成编译链接的过程:预编译:gcc -E main.c -o main.i (main.c是源码文件,main.i是生成的预编译后的文件)编译:gcc -S main.i(默认生成汇编指令文件main.s)汇编:gcc -C main.s(默认生成main.o文件)预编译:#include 的展开 宏替换 删除注释 处理预编译指令编译:进行语法,词法的解析 代码优化 汇总符号汇编:将汇编指令翻译成二进制 生成各个section 生成符号表...
2020-08-16 21:58:09 199
原创 gcc及g++的使用和区别
gcc和g++的区别有一个误区就是,gcc是编译c语言的,g++是编译c++的实际上他们的区别主要是以下两点:区别一:gcc默认只连接c库并不会连接c++库,g++会默认连接c标准库和c++标准库区别二:gcc如果编译.c文件,则按照c语言的方式编译,如果编译.cpp文件则按照c++的方式编译。g++不管是.c文件还是.cpp文件都是按照c++的方式进行编译。...
2020-08-15 20:25:17 313
原创 Linux文件系统——文件的各个属性以及文件权限的修改
ls -l命令可以显示当前位置下的文件的详细信息这些属性要分为以下八个部分来看:属性1:文件类型 d表示目录文件,-表示普通文件,p表示管道文件,l表示链接文件,c表示字符设备,b表示块设备,s表示套接字属性2:文件的权限 对于一个文件而言,操作其的用户可分为三类分别是所有者,同组用户和其他用户,所以我们看属性2的时候要分成三组,三位一组来看,每一组就代表其对应的用户的权限。例如:main.c文件属性2为:rw- rw- r-- 就是说,对于main.c文件来说所有者的权限为rw-,..
2020-08-12 17:38:18 317 1
原创 Linux——仿写Bash
Bash:与用户交互的程序——命令解析器Bash的基本工作流程:{ 1.打印提示信息 2.等待用户输入命令 (1)对用户输入的字符串进行拆分 (2)对命...
2020-07-15 16:19:17 157
原创 选择排序
算法:给定一个数组,每次都选择待排序序列中的最小值并放到待排序序列的第一个位置上代码:void SelectSort(int *arr,int len){ int minIndex; int tmp; for(int i=0;i<len-1;i++) { minIndex = i; //最小值下标 for(int j=i+1;j<len;j++)//找最小值 { if(arr[minIndex] > arr[j]) {
2020-06-13 09:54:55 92
原创 希尔排序
算法:分组再利用插入排序,也称为缩小增量排序代码://一趟shell排序,gap:分组数(间隔)static void Shell(int *arr,int len,int gap){ int tmp; int i; int j; for(i=gap; i<len; i++) { tmp = arr[i]; for(j=i-gap; j>=0; j-=gap) { if(arr[j]>tmp) { arr[j+g
2020-06-06 17:33:42 97
原创 插入排序
算法:给定一个数组,从最后一个数据开始和前面的数据依次进行比较,如果遇到小于等于它的数据则将它插入后面。例:给定一个数组 5,4,9,7 经过第一躺排序为:5,4,7,9 经过第二趟排序为:4,5,7,9 ...
2020-06-06 16:53:36 65
原创 给定两个单链表,判断是否有交点,如果有则返回第一个交点
算法:得到两条链的长度m和n,再定义两个指针p1和p2,分别指向两条链的开头,如果m>n,则让p1先走m-n步,如果n>m,则让p2先走n-m步,然后两个指针再一起走,相遇的第一个点就是第一个交点,若不相遇则没有交点。(两个链表都无环)(相交的特征:只要两条链表相交,则从第一个交点开始后面的节点都相交)注:还要就链表是否有环的情况进行分类讨论。 (1)如果一个有环一个无环则肯定不相交 (2)都有环但是两个链表不相交 (3)都有环且相交有环情况...
2020-06-03 21:41:52 360
原创 如何判断单链表是否有环
算法:定义p,q两个指针,p一次走一步,q一次走两步,如果q能一直走到尾说明没有环,如果前进过程中p与q相遇了则说明有环。具体代码:Node *IsLoop(List plist)//检测单链表是否有环{ assert(plist!=NULL); if(plist==NULL || plist->next==NULL) { return NULL; } Node *p=plist->next; //慢指针,一次走一步...
2020-05-25 16:31:04 140
原创 单链表的逆置
单链表的逆置是面试常考察的题型下面总结做这个题型的两种方法:1.数据结构中栈的思想,先进后出,后进先出(利用数组模拟栈)代码如下:void Reverse(List plist){ int *arr = (int *)malloc(Gentlength(plist)*sizeof(int));//模拟栈(Getlength函数作用是得到plist中有效数据的长度) assert(arr!=NULL); int i=0;
2020-05-08 20:36:46 783 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人