- 博客(20)
- 收藏
- 关注
原创 Linux基础IO
文件=内容+属性狭义理解•⽂件在⾥•磁盘是永久性存储介质,因此⽂件在磁盘上的存储是永久性的•磁盘是外设(即是输出设备也是输⼊设备)•磁盘上的⽂件 本质是对⽂件的所有操作,都是对外设的输⼊和输出 简称 IO⼴义理解•Linux 下⼀切皆⽂件(键盘、显⽰器、⽹卡、磁盘…… 这些都是抽象化的过程)⽂件操作的归类认知•对于 0KB 的空⽂件是占⽤磁盘空间的•⽂件是⽂件属性(元数据)和⽂件内容的集合(⽂件 = 属性(元数据)+ 内容)•。
2025-11-13 15:22:17
500
原创 Linux的进程控制
在linux中fork函数是⾮常重要的函数,它从已存在进程中创建⼀个新进程。新进程为⼦进程,⽽原进程为⽗进程。进程调⽤fork,当控制转移到内核中的fork代码后,内核做:•分配新的内存块和内核数据结构给⼦进程•将⽗进程部分数据结构内容拷⻉⾄⼦进程•添加⼦进程到系统进程列表当中•fork 返回,开始调度器调度fork之前⽗进程独⽴执⾏,fork之后,⽗⼦两个执⾏流分别执⾏。注意,fork之后,谁先执⾏完全由调度器决定。
2025-10-29 19:21:37
898
原创 Linux进程概念
输⼊设备:包括键盘, ⿏标,扫描仪, 写板等输出设备:显⽰器,打印机等磁盘(外存):读文件:把磁盘的内容读到内存里写文件:把磁盘的数据写到磁盘上磁盘的的读写称为IO站在内存的角度理解IOI:外设把数据交给我O:把数据搞到输出设备所有设备都只能直接和内存打交道。数据是从一个设备”拷贝“到另一个设备。
2025-10-25 15:41:59
807
原创 数据结构二叉树
1.1树的概念与结构树是⼀种⾮线性的数据结构,它是由nn>=0) 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,⽽叶朝下的。有⼀个特殊的结点,称为根结点没有前驱结点。下图中A就是根节点除根结点外,其余结点被分成M(M>0)个互不相交的集合T1T2……Tm,其中每⼀个集合 Ti(1 <= i <= m) ⼜是⼀棵结构与树类似的⼦树。有0。因此,树是递归定义的。树形结构中,⼦树之间不能有交集,否则就不是树形结构1.2。
2025-10-04 19:55:22
835
原创 栈和队列算法题
队列:先进先出栈:先进后出:有两个队列,利用两个队列来回倒数据,比如输入1,2,3.在栈中输出的是3,2,1.则可以利用队列把所有元素先放入一个的队列,队列不为空,然后把size-1个数据倒到另一个队列中,再把最后这个数据出队列(出数据)。入栈的话是往不为空的队列中插入数据。
2025-04-01 16:19:34
769
原创 数据结构栈和队列
⼀种特殊的线性表,其。进⾏数据插⼊和删除操作的⼀端称为栈顶,另⼀端称为栈底。栈中的数据元素遵守LIFO(Last In First Out)的原则。:栈的操作叫做进栈/压栈/⼊栈,⼊数据在栈顶。:栈的操作叫做出栈。。用什么来定义栈呢1.数组,可定义一个数组,最后面定义为栈顶,在最后面进行数据的加入和删除(定义一个数组有效数据为size,在size下标进行就好了)2.单链表,在末尾进行的话,找到尾结点很难,如果为n个数据,那么时间复杂度就为o(n),所以在头结点定义为栈顶,一样可以实现栈。
2025-03-24 20:25:27
901
原创 数据结构中的双向链表
链表的结构非常多样,以下情况组合起来就是8种(2x2x2)链表结构:在带头链表中,除了头结点,其他结点均存储有效的数据。头结点是占位子的,也叫做“哨兵位”。head结点就是头结点。循环的链表尾结点不为NULL, 不循环的链表尾结点为NULL单链表:不带头单向不循环链表双向链表:带头双向循环链表双向链表结构相较于单链表来说要复杂一些,但是接口的实现上要比单链表简单很多双向链表的结点结构:数据+指向下一个结点的指针+指向前一个结点的指针。
2024-08-17 15:18:58
626
2
原创 顺序表和链表
线性表(linearlist)是。线性表是⼀种在实际中⼴泛使⽤的 数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...线性表在,也就说是连续的⼀条直线。但是在,线性 表在物理上存储时,通常以数组和链式结构的形式存储。物理结构:数据在内存上的存储形式逻辑结构:人为想象出来的数据的组织形式,如排队顺序表是⽤⼀段物理地址连续的存储单元依次存储数据元素的线性结构,⼀般情况下采⽤存储。
2024-08-06 21:30:07
853
原创 时间复杂度
如何衡量⼀个算法的好坏呢?案例:旋转数组 https://leetcode.cn/problems/rotate-array/description/思路:循环K次将数组所有元素向后移动⼀位但是未能通过全部案例,算法没问题,但是超出了时间限制。
2024-07-17 14:08:38
1140
原创 c语言中的字符函数
c语言中有一系列函数是专门做字符分类的,也就是一个字符属于什么类型的字符。这些函数的使用需要包含一个头文件是ctype.h可能你看这些感觉很懵,我以islower举例islower是判断是否为小写的,但是‘A’是大写的,所以返回0。其他也是如此,反正符合判断返回非0,不符合判断返回0.练习:写一个代码,将字符串中的小写字母改为大写,其他字符不变提示:小写字母的ASCII-32=大写字母的ASCII。
2024-06-18 20:36:28
650
4
原创 C语言中的内存动态管理
1.在结构体中2.最后一个成员3.未知大小的数组例如:struct Sint a;char n;double b;int arr[];//未知大小的数组,arr就是柔性数组成员或者struct Sint a;char n;double b;int arr[0];//未知大小的数组,arr就是柔性数组成员。
2024-06-18 17:54:08
824
4
原创 自定义类型:枚举和联合
和结构体类似,enum是关键字,enum是名字,成员用","隔开,最后一个成员不用","。2. 和#define定义的标识符比较枚举有类型检查,更加严谨。//这里会改掉第一个字节(小端存储)一周的星期一到星期日是有限的7天,可以一一列举。最大对齐数的整数倍的时候,就要对齐到最大对齐数的。printf("小端\n");printf("大端\n");printf("小端\n");printf("大端\n");这种类型定义的变量也包含一系列的成员,特征是。月份有12个月,也可以一一列举。
2024-06-11 18:11:13
1046
7
原创 C语言中的结构体以及位段
位段的声明和结构是类似的,有两个不同:1.位段的成员必须是 int、unsigned int 或signed int 或者是 char (属于整形家族)类型。2.位段的成员名后边有一个冒号和一个数字,数字表示的是比特位,一个字节8个比特位。例如:struct Aint _a:2;int _b:5;int _c:10;int _d:30;他占的字节数有多少呢,让我们来看一下。如何计算的呢。
2024-06-11 16:11:49
852
4
原创 指针练习题目
sizeof是操作符,不是函数strlen是函数,求的是字符串的长度,统计的是字符中\0之前的字符个数,只能针对字符串(字符数组)
2024-05-30 10:07:06
1081
4
原创 指针内容大全2
回调函数:把函数的地址(指针)作为参数传给另一个函数,当这个指针被用来调用其指向的函数时,被调用的函数就是回调函数。要存ch的指针,要用数组指针来存,首先先写(*p),确认为数组指针,再写[5],确定个数,最后写数组指针指向的对象的类型,为char*。const在*的左边,*p不可修改,也就是不能通过p来修改它指向地址的值,但是它可以修改p指向的地址。这里的p为数组指针的变量名,int为指向数组元素的类型,[10]为指向数组元素的个数。2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
2024-05-24 23:13:15
1146
6
原创 数据在内存中的存储
整形在内存中存储的是二进制的补码。存储方式分为大端字节序存储以及小端字节序存储。大端字节序存储指的是高字节存储在低地址,低字节存储在高地址。
2024-05-23 09:50:26
517
1
原创 指针内容大全(1)
以指针+整数为例,指针+整数是访问的是指针后的第几个数。如下,4是数组中下标为3的数,+3之后访问到的就是他的地址,用*结引用就能打印。指针类似于我们生活的地址,指针就是计算机的地址。我们口中说的指针指的是指针变量,取出地址的指针用&。指针的类型有下面等等,指针指向的类型是什么样,指针变量的类型就是什么*。指针-指针得到的是两个指针之间的元素个数,但是要在同一片空间下。这里的数组名是整个数组,计算的是整个数组的大小,单位是字节。这里的数组名也是整个数组,取出的是整个数组的地址。可以用指针来访问数组的下标。
2024-05-20 22:18:18
583
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅