- 博客(17)
- 收藏
- 关注
原创 单向链表与双向链表
可以解决顺序表存储空间上限,插入和删除效率低的问题链表:链式存储的线性表链表的组成:由一个个节点组成节点:由数据域和指针域组成数据域:存放数据的区域指针域:存放下一个节点地址的指针单向链表,双向链表,循环链表只能通过头节点或者头指针单向的访问后继节点的链表,称为单向链表。每个节点的指针域只记录其后继节点的地址。(火车结构)头节点结构体格式:int len;//头节点的数据域普通节点结构体格式:int data;//普通节点的数据域unionint len;//头节点的数据域。
2024-07-29 17:54:45
524
原创 数据结构1
数据:计算机能够识别,存储,用来描述客观事物的。数据的种类:数值数据:整数,小数,字符串......非数值数据:图像,视频,音频......数据的组成:数据项--->数据元素--->数据对象--->数据数据项:数据的最小单位,用来组成数据元素。(例:一个学生的学号)数据元素:由数据项组成,用来描述事物特征的。(例:一个学生)数据对象:由属性相同的数据元素组成的数据对象。(例:一个班级)
2024-07-25 19:12:07
968
原创 结构体笔记
struct 结构名 变量={.成员1=,...,.成员n=} //不按顺序初始化(用". 成员"+成员对应的数据类型的数据)stu s = {18,"11",{1,"名字"},{2,"名字"},{3,"名字"}};结构体是用户自定义的一种数据类型,可以是相同的数据类型,也可以是不同的数据类型的集合。printf("占位符\n",变量.成员1,变量.成员2,...)构造数据类型:数组,指针,结构体,共用体,枚举。变量1={.成员1=,...,.成员n=},变量2={.成员1=,...,.成员n=},
2024-07-24 17:48:54
751
原创 数据结构1
功能:给已有的数据类型重新命名,可以使代码简单易懂格式:typedef 数据类型 新名;//用新名替换原来的变量名//普通类型重定义格式//构造类型重定义格式。
2024-07-23 18:13:39
891
原创 shell脚本补充和Makefile+GDB
注意:如果makefile(小写)和Makefile(大写)同时存在,则默认执行makefile(小写)作用:当文件未发生修改时,Makefile不对该文件进行编译等操作,节省时间,加快执行速度。定义有参有返函数,如果用户存在,请回答用户是否加密,并返回用户所使用的编译器。如果return后面的表达式的值不在0-255之间,则发生越界,类似C语言。定义有参有返函数,如果用户存在,则返回uid(用户ID),gid(组ID)Makefile是由规则组成的,规则是由目标,依赖,shell指令组成。
2024-07-19 18:47:58
750
原创 shell脚本补充2
判断两个文件是否具备相同的inode(是否是硬链接文件)判断两个文件谁更新判断两个文件谁更旧判断文件存在,且是一个块设备文件-b FILE判断文件存在,且是一个字符设备文件-c FILE判断文件存在,且是一个目录-d FILE判断文件存在-e FILE判断文件存在,且是一个普通文件-f FILE判断文件存在,且是一个链接文件-h FILE-L FILE判断文件存在,且是一个管道文件-p FILE判断文件存在,且是一个套接字文件-S FILE判断文件存在,且不是空文件。
2024-07-18 18:22:28
1010
原创 shell脚本
shell作用:保护内核c/c++:编译型语言,需要使用编译器,执行速度相对快,不可以直接和内核交互shell:解释型语言,需要使用解析器,执行速度相对慢,可以直接和内核交互shell本质就是指令的集合,但是指令需要满足一定的逻辑关系,在使用解析器解析脚本文件是,按照一定的逻辑关系进行执行。
2024-07-16 18:42:02
927
原创 shell指令
grep "^ubuntu$" 文件名 //查找以ubuntu开头且以ubuntu结尾的文件。grep "字符串" 目录名/路径 -r //递归查找字符串在指定路径下的哪些文件中出现。sudo apt remove 软件名 --purge //卸载指定软件,包不被删除。grep "^ubuntu" 文件名 //查找以ubuntu开头的文件。grep "ubuntu$" 文件名 //查找以ubuntu结尾的文件。grep "字符串" 文件名 -w //以单词的形式查找字符串。
2024-07-15 17:36:08
916
原创 指针
值:arr[i]--->*(&arr[0]+i)--->*(arr+i)--->p[i]--->*(&p[0]+i)--->*(p+i)--->*p++地址:&arr[i]--->&arr[0]+i--->arr+i--->&p[i]--->&p[0]+i--->p+i--->p++int* p //p的类型是int*,int表示指针指向地址对应值的类型,表示指针加减运算的偏移量。&arr[0]--->p--->&arr---&p[0] //偏移一个元素。//指针p没有指向,计算机会随机指向一片内存。
2024-07-10 19:05:51
438
原创 函数及二维字符数组的补充
字符串初始化:*{}不可省略//字符串的全部初始化//字符串的部分初始化,剩余元素使用\0填充//省略第一维度,默认是实际的行数单字符的初始化//单字符的全部初始化。
2024-07-09 18:35:05
819
原创 数组及相关练习
数组:使用一段连续的存储空间存储类型相同的构造类型构造类型:可以分割(数组,结构体,共用体)一维数组:使用一个下标表示的数组int arr【】格式:存储类型 数据类型 数组名[常量表达式]*解析*存储类型:auto/static/exterm/register/const/volatie*数据类型:基类型,构造类型,空类型,指针*数组名:满足命名规范*【】:是数组的标志*常量表达式:表示数组元素的个数,定义时不为0,不为空,不为小数,初始值不为变量int arr[5]--->auto int arr[5]
2024-07-05 20:11:06
683
原创 选择机构补充与循环结构
判断时是需要==if (a=5)--->if (5=a) 这种会报错,赋值等号左边必须是变量判断整数a的值为0判断整数a不会0if (a!switch的执行速度最快格式:switch(表达式)case 常量表达式1:执行操作 break;case 常量表达式2:执行操作 break;case 常量表达式3:执行操作 break;case 常量表达式4:执行操作 break;case 常量表达式5:执行操作 break;.......case 常量表达式n:执行操作 break;
2024-07-04 18:19:39
918
原创 类型转换,输入输出,运算符与控制结构
若表达式1为假,则判断表达式2,如果表达式2为真,则执行c语句2结束;(a>='A'&&a<='Z'||a>='a'&&a<='z'||a>='0'&&a<='9')输入用户名和密码,如果用户名和密码正确则登录成功,否则失败,默认用户名为A,密码是1234。判断变量char a是否为大写:a>='A'&&a<='Z'判断变量char a是否为小写:a>='a'&&a<='z'判断变量char a是否为数字:a>='0'&&a<='9'*表达式:可以是任意表达式,但是一般是算数,关系,逻辑组成。
2024-07-03 19:04:08
880
原创 进制转换与数据类型
short--->signed short int(有符号短整型)查看取值范围:vim/usr/include/limits.h。long--->signed long int(有符号长整型)double a,b,c;//当类型一致时,可以定义多个变量。//当类型一致时,可以定义多个变量。int a,b,c;//当类型一致时,可以定义多个变量。-128-127--->0-127 共有128个字符。'0'--->48 '0'-48可把'0'转换为0。一般宏名大写:宏大写,变量小写,函数名驼峰/下划线。
2024-07-02 19:01:47
979
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人