自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 数据结构(5)

顺序队列存在假溢出问题:即当数据的头不在队列的两端,存储数据会发生空间不足的情况,事实上队列空间被没有被完全利用。解决上述问题的办法为:使用顺序队列,即存储数据到一端时,会折返至另一端继续存储,存储至队列空间-1个时结束。存储数据时,通过对应的哈希函数可以将数据映射到指定位置,查找时,仍可以将根据数据找到存储位置。将键(Key)映射到对应的值(Value)的存储位置,从而实现快速的插入、删除和查找操作,平均时间复杂度接近 O (1)。队列的最大存储特点就是先入先出即:FIFO,可以应用在数据的缓存。

2025-08-07 22:46:38 729

原创 数据结构(4)

内核链表是操作系统内核和系统级编程中常用的一种数据结构,它与普通链表相比,在设计上更加灵活高效,它不再将数据存储再链表中,而将链表存储在数据中,而且本身是双向循环,提高了利用率。二级指针的作用:1.在被调函数中,想要修改主调函数中的指针变量,需要传递该指针变量的地址,形参用二级指针接受;内存可分为五个区:栈区、堆区、内核、数据区、文本区。利用顺序表创建的栈称之为顺序栈,利用链表创建的栈称之为链式栈。空栈:先存入栈数据,再移动栈顶,使栈顶保持为空;满栈:先设置栈顶,再入数据,使栈顶始终有数据;

2025-08-06 22:10:04 884

原创 数据结构(3)

其中OBJ为目标文件,SRC为依赖文件(多个依赖可以写做SRC+=),CC为gcc编译器, INC为声明(.h文件),后面加文件地址。在引用任意文件时都需在定义的变量加上()并在括号外加上$符号,例如$(OBJ)。$^意思为所有依赖,$<意思为第一个依赖,$@意思为生成的目标 . out文件。其中data依旧表示链表数据,ppre表示前一个结点的地址,首结点为NULL,pnext则表示后一个节点地址,尾结点为NULL。时间戳:在编译代码时,只编译修改的文件,其他文件只做链接即可。

2025-08-05 20:13:43 605

原创 数据结构(2)

前面已经介绍过单向链表行为有哪些链表行为,在成功创建链表对象之后,我们开始完成其他链表行为。一、插入数据(1)头插(2)尾插二、删除数据(1)头删(2)尾删三、修改数据四、查找数据除了常规查找方法之外,我们也可以利用快慢指针法进行查找,快指针一次走两步,慢指针一次走一步,快指针走到结尾时,慢指针正好走到中间值,我们利用这个原理,寻找倒数第k个元素时,只需让快指针先走k步,然后二者共同走直至结尾即可。五、销毁数据六、判断有环链表有环列表:该列表中没有空指针

2025-08-04 23:55:41 332

原创 数据结构(1)

散列结构(哈希结构):将数据的存储位置与数据元素之间的关键字建立对应关系(快速定位数据)2.线性关系:数据元素与元素之间存在一对一的关系(数组、顺序表、链表、队列、栈);4.图形结构:数据元素与元素之间存在多对多的关系(网状结构)。索引结果:将要存储的数据的关键字和存储位置之间建立一个索引表;3.树形结构:数据元素与元素之间存在一对多的关系(二叉树);元素(key) ———— 函数(哈希)———— data。(2)物理结构:数据元素在计算机内存中的存储方式;链式结构:在内存中选用一套非连续的内存空间存储;

2025-08-04 23:33:40 515

原创 结构体、共用体,位运算

在C语言中,结构体( struct )和共用体( union )都是用户自定义的数据类型,用于组合不同类型的数据,但两者的核心区别在于内存分配方式,这直接决定了它们的用法和场景。左移 《 , 两二进制数左移n次.后面补0 低位向高位移动, 例如 1《 2,意思为1从低位向高位移两位;右移 》 , 二进制数右移n次.前面补0. 高位移向低位, 例如 1 》2,表示1从高位向低位移两位。枚举也属于用户自定义函数类型,但与上面两者不同,它是定义一组命名的函数常量,最终利用到函数中。

2025-07-31 22:23:18 1119

原创 指针函数与指向指针的指针

用法为malloc(元素个数 * sizeof(类型名)), 定义一个 int *p= malloc(1024 *1024)后,系统会传回一个首元素地址。可以用来间接修改指针的值 ,即当需要在函数中修改外部指针的指向(如动态分配内存后更新指针),必须使用指针的指针。回调函数是一种特殊的函数,它作为参数传递给另一个函数,并在特定事件发生或条件满足时被调用,回调函数的本质是让函数的使用者调用。内存地址层级关系为**p(二级指针) → *p(一级指针) → a(变量) → 10(数据)。

2025-07-30 21:32:54 706

原创 指针与数组

int *p 【10】表示p是一个包含10个int型数组的指针,他的字节长度为80个字节。二维数组a【i】【j】可以用指针写作 *(*(a + i) + j) ,其中i代表行,j代表列。此外二维数组作为函数参数传递,其类型为一维数组的指针,如int (*a)【4】。这类函数可以返回变量、数组、动态分配内存等的地址,常用于需要在函数外部使用函数内部计算得到的数据地址的场景。其中存在万能复制函数Mencpy,形参类型为void *型(万能指针),本身不能做指针运算,用于函数可以强转为任意类型。

2025-07-30 00:41:46 375

原创 指针的运算与数组

其结果依旧是一个是一个指针,新的指针是在原来的地址值基础上加上/减去n *(sizeof(指针指向的数据类型))个字节。指针声明时若未确定指向,通常初始化为空指针,避免成为 “野指针”(指向随机内存的危险指针),空指针避免野指针意外修改重要数据。在编程中,空指针 是一个特殊的指针值,表示该指针不指向任何有效的内存地址。指针也可以进行自增,即*(p ++)或*(++p)或*++p(单目运算符自右向左运算)。(*p)++ 他表示指针的内容自增,而不是指针本身。指针和指针之间可以进行减法运算,但是要保证两种(

2025-07-29 00:21:10 545

原创 预处理命令与指针初步

在64位操作系统下指针的内存空间为8个字节(sizeof (p)= 8),32位操作系统占4个字节(32 位操作系统的地址总线宽度为 32 位)。int *p也可以储存其他类型的指针,通过显性转换来实现,例如存储float型的指针是,可以写作int t;不带参的通常形式为#define 标识符(宏名) 字符串 标识符表示后面的字符串(只换不算),后无分号。#endif(避免重定义);指针格式为 基类型 * 指针变量名 (例如: int *p,定义了一个只装int型的指针);

2025-07-28 00:02:18 561

原创 多维数组与变量存储类别

extern函数:对于已有全局变量,添加extern前缀表示已定义该函数,此处只是声明,用法为: extern int maxOfTwoNumber(int a,int b);register函数:表示将函数寄存到寄存器中(也不一定,不太重要的不会寄存),能提高读写效率,且不会被寻址,用法为 register int k;作用域:局部作用域、全局作用域,可以嵌套,{}以外为全局变量,函数形参为局部,全局变量存放在静态区,其中内容未被初始化,其变量值为0。(3)在同一作用域中不得定义同一标识符;

2025-07-25 20:39:24 520

原创 函数的调用与参数

函数调用时,PC 会指向被调用函数的入口地址,在主调函数中的函数会使pc跳转至被调函数的第一条指令,第一条指令地址为函数的入口。栈遵循先进后出(FILO),后进先出(LIFO)的规则,函数参数入栈顺序默认自右向左传递(例如:strcat(i,j)j先入栈)。局部变量:在函数、代码块(如if/for语句块)内部定义的变量,仅在其所在的局部范围内有效。与值传递对应的就是指针传参,其在被调函数中修改主调,通过访问地址修改实参本身,适用于数组,数组作为函数参数传递首元素地址,实现指针传参,提高效率。

2025-07-24 19:57:34 1004 1

原创 二维数组与函数初步

用来比较数组,通过数组内的元素在ASCII表中的序号进行比较,具体方法为strcmp(数组1,数组2),若数组1大于数组2,输出结果为正数,反之为负数,相同为0。二维数组组成与一维数组相同,均由类型说明符,说明符与常量表达式构成,其中类型说明符为除void外的所有类型,数组名为满足字符串的一般规则,常量表达式为定义的变量如(int a。如下,第一个返回值之前的为被调函数,两个返回值之间的部分为主调函数,被调函数一般在主调函数之前。函数名:满足标识符的一般规则,是函数的标识符,用于调用函数;

2025-07-23 20:30:46 455

原创 字符数组的定义与引用

分别定义begin 和end,begin从0开始,end为数组元素个数-1,定义数组中间值为mid = (begin + end)/2,利用if语句与目标值进行比较,若中值比目标值小,则在右边,反之在左边。在一个足够大的数组里,按照单行有序性连续的方式存储,这种称之为字符串,通常以‘\0’的结尾。功能:按 ASCII 码值逐个比较两个字符串的字符,直到遇到不同字符或 '\0'。功能:将源字符串追加到目标字符串的末尾(覆盖目标字符串原有的 '\0',并在新字符串末尾添加 '\0')。

2025-07-22 20:58:44 559

原创 一维数组的定义与引用

上述定义同样可以写成int a 【】= {1,2,3,4,5} 只需保证省略元素后有初始化列表。第一轮:3和1交换→[1,3,4,2] → 3和4不换 → 4和2交换→[1,3,2,4](4 到位)第二轮:从剩余元素找最小值 2→与 3 交换→[1,2,4,3](2 到位)插入 2:2<4→移动4 → 2<3→移动3 → 插入→[1,2,3,4]下面是一段将数组{1,2,3,4,5,6,7,8,9,0}进行逆序的代码。例如原数组 [1,2,3,4,5] → 逆序后 [5,4,3,2,1]

2025-07-21 22:35:02 813

原创 C语言基础 (5)

上述代码完成了在1990年和2100年之间对闰年的查找,其中,year = 1990为初始化,year<=2100为循环条件,year++使为趋于结束的语句。{}内为循环体结构,,表达式1表示初始化,表达式2表示逻辑或者关系(循环条件),表达式3表达循环趋于结束的语句,循环终止时,循环条件为初次为假的时候。表达式1为逻辑或关系表达式,判断表达式1为真,输出结果为2,若1为假,则输出结果3。循环的三要素:循环变量初始化,这是进入循环的条件,循环要有执行条件,循环趋于结束的语句。表达式为 for(表达式1;

2025-07-20 23:58:59 737

原创 C语言基础(4)

上述代码完成了输入年份与月份来计算天数,其中小月与大月间运用逻辑或表示为其中的任意一个,在闰年平年的计算中运用逻辑与,表示某数被4整除和不能被100整除的条件必须同时执行。&&运算符在左关系表达式为真时,会截断右表达式(不考虑优先级),导致右表达式不执行【表达式截断】,减少代码耦合性,来保证程序效率。注意:不能连续比较,像i=2,j=4,-4<i<j,这样会将-4与i比较,结果与j比较。1<小于,2<=小于等于,3>大于,4>=大于等于,5==等于,6!或||:逻辑或,两者一个为真为真, 否则均为加;

2025-07-18 21:20:22 395

原创 C语言基础(3)

putchar函数(字符输出函数)的作用是向终端输出且只能输出一个字符,一般形式为putchar(),括号内里可以填整型数字,输出结果为ASCII码表对应的数,也可以直接填char型,此时会产生符号位扩展,ASCII码表中最大值为127,二进制为0111 1111,经过符号位扩展,高字节补0。%5d:输出宽度为5,空位补空格,若%05d,表示输出宽度为5,空位补0,若%-5abc,则输出5 abc(中间五个空格),不允许输出%-05abc;数据操作的任务是对已提供的数据进行加工。

2025-07-17 20:58:08 609

原创 C语言基础(2)

输出i + j时,i + j 叫做匿名变量,又称临时变量,是指程序执行中未定义的可改变的量,const int i 值恒定,属于只读变量。右边的值称为右值,一般为常量。纵向的箭头自下向上优先级增高,在运算中低优先级的数据类型会转换为高优先级的数据类型,例如int与long同时运算时,int会转变成long型,这种混合运算中的转换我们称之为。同时,出来在混合运算时进行转换之外,我们也能够进行自发的转换,如在变量前增加 (x)a,x表示我们想要转换的类型,加完后进行隐式转换,这种转换我们称之为。

2025-07-16 21:20:19 734

原创 C语言基础

阶码将整数部分转换为二进制,小数部分×2,只至小数部分为0为止,利用科学计数法技术,进行移位,将移位的阶数➕127,转换为二进制;在整形数据中,第一位为符号位,0为正数,1为负数,若定义变量为负数,先将其转为十六进制,再转为二进制,取反码,再➕1得补码(若正数原码即为补码),再转为十六进制存储进内存单元。char和unsigned char ,大小为1个字节,char范围是-2的-7次方~2的7次方-1;(1)整形(整数)(2)字符型(3)浮点型(包含单/双精度型)(4)枚举型。

2025-07-15 19:12:35 292

原创 普特Day1

了解了unix操作系统和linux操作系统的历史以及c语言的诞生。学习了Linux的简单操作指令,包含cd,pwd,ls等,学习了绝对路径和相对路径,文件夹及文件的创建、复制及删除。编写和执行“Hello World”。今天了解了总体学习计划,明白学习要求。

2025-07-14 17:27:23 237

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除