- 博客(34)
- 收藏
- 关注
原创 二十八天(数据结构:图的补充)
visit[10] -> visit[0]表示V[0]是不是已经被访问 visit[1]表示V[1]是不是已经被访问.....s[n] == 0的时候的d[n]的最小值 -> 它的最小值为min 下标为minindex。d[0]里面的值代表的是起点(已知的起点)到我V[0]终点所需要的路径的大小。2 无向图:关系是没有方向的(你可以想象是小区的小道,你过去是走这一条,回来的时候也是走的这一条)d[v]里面的值代表的是起点到我V[v]终点所需要的路径的大小。每一行代表的是起点到我这个顶点走的路径。
2025-08-08 21:43:50
795
原创 第二十七天(数据结构:图)
图是一个二元组:描述V(顶点的代号,我们需要一个"数组") 描述R(可能是两点之间的距离,我们也需要一个"数组"去描述)R:关系集合,图中顶点与顶点之间的关系(如果是地图,这个关系集合可能就代表的是各个地点之间的距离)2 无向图:关系是没有方向的(你可以想象是小区的小道,你过去是走这一条,回来的时候也是走的这一条)出队,转向它的下一辈(它所有的邻接点(前面有可能已经被访问过,访问过的要排除))从出发点开始,将其遍历,然后以深度优先的方式继续遍历它的邻接点(和它有直接关系的点。//顶点与顶点之间的关系集合。
2025-08-07 21:32:45
582
原创 第二十六天(数据结构:树(补充版程序请看下一篇))
分支数 = m * nm + (m - 1) * n(m - 1) + .... + 3 * n3 + 2 * n2 + 1 * n1。3 拉开兄弟之间的连线,节点变成它前面的那个哥哥的右孩子(大哥的右孩子是二哥,二哥的右孩子是三哥..)删除树里面一个节点 : 删除一个节点之后我们不能影响这个树的排序性(每个节点的左边都是小的,右边都是大的)1 将父节点与子节点的右孩子,右孩子的右孩子,右孩子的右孩子的右孩子...连接起来。n0为度为0的节点个数 n1为度为1的节点个数 n2为度为2的节点个数。
2025-08-06 21:38:54
555
原创 第二十五天(数据结构:树)
分支数 = m * nm + (m - 1) * n(m - 1) + .... + 3 * n3 + 2 * n2 + 1 * n1。n0 = 1 + n2 + 2n3 + 3n4 + .... + (m - 1)nm ----> 可以直接套公式的。树的层次(深度):从根开始,根为第一层,根的儿子为第二层,儿子的儿子为第三层......不能乱了辈分。2 最下面的那一层所有的节点都是尽左排,一个节点的左边是不能添加新的节点。n0为度为0的节点个数 n1为度为1的节点个数 n2为度为2的节点个数。
2025-08-05 22:18:46
1102
原创 第二十四天(数据结构:栈和队列)队列实践请看下一篇
/指向队尾元素的 插入的时候往rear的后面进行插入。//指向队头元素的 删除的时候砍掉这个头。当front == rear的时候没有办法判断这个队列是空的还满的。-> 没有变量num来对我们的元素个数来进行判断 ---- 这种是常用的。// 实际队列容纳个数为 maxnum - 1。//利用头节点来搞定stacknode的管理 对于用户来说是最友好的。//利用头节点来搞定queuenode的管理 对于用户来说是最友好的。struct ArrayQueue //同样是为了管理我们的队列的。
2025-08-04 22:37:45
551
原创 第二十三天(数据结构:链表补充【希尔表】)
2 元素与元素之间的序偶关系 --- 不像顺序表一样的,我们通过前后关系+1 -1就搞定了。最简单的就是指针,只要我这个元素里面有一个什么东西指向了我的后面的这个元素。在现有代码上面,输入一个什么数据,在这个链表找,如果有这个数据则返回他是第几个元素。因此需要返回first 删除的这个节点是在堆上面的,因此要free,切记!头节点是用于管理这个链表的,除了管理这个链表,它本身是和这个链表没有什么联系的。一个线性表里面可以是任意的数据元素,但是同一个线性表里面数据应该是同类型的。//指针域 指向它的后面。
2025-08-01 22:44:22
521
原创 第二十二天(数据结构,无头节点的单项链表)
2 元素与元素之间的序偶关系 --- 不像顺序表一样的,我们通过前后关系+1 -1就搞定了。最简单的就是指针,只要我这个元素里面有一个什么东西指向了我的后面的这个元素。在现有代码上面,输入一个什么数据,在这个链表找,如果有这个数据则返回他是第几个元素。因此需要返回first 删除的这个节点是在堆上面的,因此要free,切记!x有可能是第一个,如果是第一个,将y加入到x的前面,第一个变成了y。顺序表平时在使用的时候没有多大的问题,但是在数据量大的。找到第一个比它大的元素,将这个节点插入在这个元素的前面。
2025-07-29 22:50:33
666
原创 第二十一天(shell练习)
grep -E -c "\S" /mnt/hgfs/E/实体班/HN2502/第一阶段/正则表达式/code/regex.c。r=`find /mnt/hgfs/E/实体班/HN2502 -regex ".*/*\.[ch]"`统计你的share共享文件夹里面所有的.c .h文件总共有多少行。#循环r这个单词表就可以了 每一个单词都是一个文件。4请你写一个shell脚本,计算你这段时间总共写了多少句代码。如果你是按照我写的那个统计有多少行不行。找所有的.c .h文件。3 计算一个文件有多少行。
2025-07-28 21:02:52
160
原创 第二十一天(shell俗称“脚本”的初学)练习答案见下一章
export PATH=$PATH:/mnt/hgfs/E/实体班/HN2502/第一阶段/shell/code/grep -E -c "\S" /mnt/hgfs/E/实体班/HN2502/第一阶段/正则表达式/code/regex.c。r=`find /mnt/hgfs/E/实体班/HN2502 -regex ".*/*\.[ch]"`我现在的路径是/mnt/hgfs/E/实体班/HN2502/第一阶段/shell/code/$* -> 包含所有的命令行参数,将所有的参数看成一个整体,是一个字符串。
2025-07-28 20:58:53
607
原创 第二十天(正则表达式与功能实际运用)
REG_EXTENDED | REG_ICASE 用扩展的正则表达式并且忽略大小写。preg:编译好了的正则表达式 --- 就是它能看得懂的字节码。find ./ -name "*.c" -> 在当前路径下面查找所有的.c文件。-:表示从ASCII码开始到ASCII码结束这一节所有的字符。我在我的系统里面存了一个pxxxxx.c的这么一个文件,我忘记放哪里了,你帮我找一下。[A-Z]: 表示 A到Z中间所有的字符,只会匹配其中一个。[^0-9] : 排除所有的数字字符,其它的字符都可以和我匹配。
2025-07-25 19:19:33
863
原创 第十九天(Linux基本命令更新)
chmod u-w 1.txt -> 将1.txt用户权限减去一个可写的权限。-rw-r--r-- 1 china china 115 7月 24 11:43 1.txt。ln -s 原文件 软链接文件 -> 创建一个软链接文件,这个文件是指向这个原文件夹的。ln -sf 新的文件 存在的链接文件 -> 存在的链接文件重新指向 新的文件。/etc/passwd -> 这个文件管理所有的用户,超级用户可以操作,其它用户只能读。-p 创建这个文件夹的时候如果路径上面的文件不存在则一并创建。
2025-07-25 19:16:59
344
原创 第十八天(Linux基本命令未完)
tar -jxvf xxx.tar.bz2 使用bzip2算法解压xxx.tar.bz2这个文件。chmod u-w 1.txt -> 将1.txt用户权限减去一个可写的权限。-rw-r--r-- 1 china china 115 7月 24 11:43 1.txt。ln -s 原文件 软链接文件 -> 创建一个软链接文件,这个文件是指向这个原文件夹的。ln -sf 新的文件 存在的链接文件 -> 存在的链接文件重新指向 新的文件。-p 创建这个文件夹的时候如果路径上面的文件不存在则一并创建。
2025-07-24 21:42:35
485
原创 第十六天(结构体初学)
sizeof(pl) = sizeof(pl.成员1) + sizeof(pl.成员2) + ..... + sizeof(pl.成员n)//栈开辟一个变量叫pl 类型是struct Studen *,还是一个野指针。//栈开辟一个变量叫pl 类型是struct Studen。//d将a a1给包了 没有超过4字节,因此一起捆在一起了。//a a1看成一个数组 并且不到4字节,因此包了。成员的位置是会影响内存大小的,为了节约内存空间,因此成员的顺序就是程序员应该考虑的问题了。
2025-07-22 22:15:03
978
1
原创 第十五天 练习篇(数据包初解析与学生管理系统开发)
p = 0x01(是p的最高字节) 0x02(是p的次高字节) 0x03(是p的次低字节) 0x04(是p的最低字节)Hum = 0x07(是Hum的最高字节) 0x08(是Hum的最低字节)T = 0x05(是T的最高字节) 0x06(是T的最低字节)有效数据字节之后是校验位,校验方式为前面的所有字节的异或值(这种是常用的)当我们输入1,则进入增加学生信息的功能,输入学生的信息进行保存。还有一种是更加常用的(前面的所有字节加的结果保留一个字节)输入2进入按名字查找学生信息,输入一个名字,在系统里面匹配。
2025-07-21 22:02:40
227
1
原创 第十五天(main函数的形式参数)
/转为long long。练习:通过main函数传参的形式,计算参数里面第一个是整数 第二个是一个运算符 第三个是一个整数。参数以NULL结尾,./a.out 1 2....在命令行写完之后回车。这个时候就可以像cd这个程序一样 在后面写一节,后面写的就是它的参数。a.out运行的时候第一个参数"./a.out"如:./a.out 1 2 那么argc这个时候就是3。/mnt/hgfs/share 就是这个cd程序的参数。main也是一个函数,因此它也有参数,它的参数有两个。第二个参数为"123"
2025-07-21 21:58:14
320
1
原创 第十四天(c语言初学经典问题回顾)欢迎评论区补充
我现在有另外一个数,输入即可,输入的这个数很有可能就是a里面的某一些数的和。也可以循环去访问里面 的变量。//访问里面的数 用下标。问题:你有30个数,有正数 有负数,
2025-07-19 20:16:06
213
1
原创 第十三天(指针数组,数组指针等)
/解释为p = p + 2 * (sizeof(*p)) = p + 8 = 0x1238 + 8 = 0x1240。//解释为 q = q + 2 * (sizeof(*q)) = 0x1358 + 2 = 0x135a。//这个时候编译器会将其解释为 p = p + 1 * (sizeof(*p)) = p + 4。//解释为 t = t + 1 * (sizeof(*t)) = 0x3456 + 8 = 0x345e。//解释为 q = q + 1 * (sizeof(*q)) = 0x1358。
2025-07-18 22:23:31
308
1
原创 第十二天(指针练习)
/解释为p = p + 2 * (sizeof(*p)) = p + 8 = 0x1238 + 8 = 0x1240。//解释为 q = q + 2 * (sizeof(*q)) = 0x1358 + 2 = 0x135a。//这个时候编译器会将其解释为 p = p + 1 * (sizeof(*p)) = p + 4。//解释为 t = t + 1 * (sizeof(*t)) = 0x3456 + 8 = 0x345e。//解释为 q = q + 1 * (sizeof(*q)) = 0x1358。
2025-07-17 21:00:43
583
1
原创 第十一天(指针初学)
p的类型是char * ,因此p的指向类型char *&a的类型为int * : 对哪个变量取地址,那么这个&a的类型就是a的类型后面加一个*//p保存了1024这个地址,所以p指向了1024这个内存空间。//将2048这个值写入到p保存的那个地址上面去 一次操作4个字节。//因为是int *,它的指向类型为int int为4个字节。地址是唯一的,因此操作的这个地址就是a的地址,因此a也就相应的改掉了。//而内存空间是字节编号,说白了p只是保存了1个字节的地址。*q是错的 *******
2025-07-16 20:37:39
773
1
原创 第十天(函数递归思维以及经典问题)
/int GetMax(int a = 1024,int b = 2048)//这么写c语言里面是错误的。//接到的是一个已经被销毁了的内存空间的地址 明细这个内存空间被收回,你不能使用了。我解决f(100)的时候碰到了f(99)的问题 -> f(n)需要先解决f(n - 1)//2 这里的a会将1这个地方的a给隐藏。//return后面有值的,那么表示完成这个函数的时候有这个值返回。//int arr[5]局部的 -- 出了大括号之后就销毁了(死了)
2025-07-16 09:09:16
528
1
原创 第九天(函数初学)
/int GetMax(int a = 1024,int b = 2048)//这么写c语言里面是错误的。//2 这里的a会将1这个地方的a给隐藏。//return后面有值的,那么表示完成这个函数的时候有这个值返回。从左往右:实参的第一个给形参的第一个,实参的第二个给形参的第二个......int GetMax(int a,int b)//ab的初始化由调用的时候实参给的。void Heihei(int a[],int n)//传数组的时候必须传元素个数。
2025-07-14 20:42:57
596
1
原创 第八天(数组的移位使用)
将'a'值初始化a[0] 'b'值初始化a[1].....char a2[5] = {'A','B','C','D','E'};if(a[i] >= a[i + 1])//只要满足这一点就不是递增 了 我就没有必要往后面走了。因此 a == &a[0] -> scanf("%d",&a[0]) <-> scanf("%d",a)-> 相当于 int a[5] = {1,2,3,0,0};(a = &a[1]) -> 这种是不行的,如果是可以 的,那么我们是不是可以理解。
2025-07-10 21:34:30
636
1
原创 第七天(数组初学)
将'a'值初始化a[0] 'b'值初始化a[1].....char a2[5] = {'A','B','C','D','E'};因此 a == &a[0] -> scanf("%d",&a[0]) <-> scanf("%d",a)-> 相当于 int a[5] = {1,2,3,0,0};(a = &a[1]) -> 这种是不行的,如果是可以 的,那么我们是不是可以理解。数组定义出来之后是可以初始化的,初始化的格式 --- 如果不初始化 ,数组里面元素的值是未知的。
2025-07-09 21:13:05
346
1
原创 第六天(循环练习)
/循环就要找循环条件 --- 所有的因子都拿完 ,这个数就变成1了,所以我得循环条件是这个没有变成1。//我要找这个数 的因子,如果确定除数是它的因子,我就把这个除数从这个数里面拿出来。我现在有另外一个数,输入即可,输入的这个数很有可能就是a里面的某一些数的和。这个数就是它的因子,由于是2开始的,这个因子是不是必然为质数。//每一个数里面都有可能有5的因子,如果我发现有5这个因子。//我就要将这个数里面所有的5因子都拿完 -- 循环拿。这些数里面2的因子的个数显然要比因子是5的多一些。
2025-07-08 20:53:58
844
1
原创 第五天(循环结构)
while(循环所有的bit(0 ~ sizeof(a) * 8(这个数是不能到的)));1 上面的练习2(134行)后面多加一句,请提高效率 ---- 这个作为作业,不限定用哪一个循环。执行规则,先执行do后面的语句,然后判断while后面的条件,如果为真则执行循环体。我的代码需要写很长,发现代码都是一样的,我这个时候就想到怎么重复的去使用这些代码。为了防止上面的死循环,我们更多的时候是让goto形成有条件的跳转。先来看合法的表达式的值,如果为真则执行循环体,循环体执行了一遍。int a = 0;
2025-07-08 09:29:56
805
1
原创 第四天(分支结构)
1、60以下不及格,60为及格,60~70为一般 70 ~ 85为良好,85以上为优秀,100为秀儿。当业绩在600000~1000000之间时, 600000按上面的提成,多出来的按3%提成;如:匹配的是常量/常量表达式2,执行的语句就是语句2;语句4....语句n。60以下不及格,60为及格,60~70为一般 70 ~ 85为良好,85以上为优秀。谁匹配上面,就从这个地方开始往下面执行语句,一直往下面执行,这个时候。用{}括起来的,里面不管有多少条语句,对于外面的来讲,只认这一条语句。
2025-07-04 22:57:36
625
3
原创 第三天(运算符)
0) 并且 (y % 4 == 0)) 或者 (y % 400 == 0)((不能被100整除) 并且 (能被4整除,它是闰年)) 或者 (能被400整除也是闰年)((y对100求余有余数) 并且 (y对4求余没有余数)) 或者 (y对400求余没有余数)a || b || c:只要a是真的,不管后面是什么都是真的,结果已经确定。a && b && c:只要a是假的,不管后面是什么都是假的,结果已经确定。就不会往后面算了,只有a是假的才会算b,只有b是假的才会继续算c。
2025-07-03 20:59:19
602
1
原创 开学第二天(数据类型)
253 -> 255 - 2 -> 1111 1111 - 2 = 1111 1101 -> 和-3的保存形式一模一样。变量的名字没有其它的含义,就是位了方便使用那个内存(变量对应的那个内存)//形成获取内存条上面4个字节的指令,给这4个字节起了一个名字叫a。1 定点小数:小数点是固定的,前面的两个字节保存的是整数不分,后面两个字节保存的是小数部分。赋值的那个往被赋值的变量里面去赋值的时候,赋值的那个有符号,被赋值的那个高位补符号位。4 将得出来的这个二进制 + 1,得到的就是负数的存储形式。
2025-07-02 19:01:08
382
1
原创 开学第一天(学习“Hello World”)
(signed)long(-2^31~2^31-1)/unsigned long(0~2^32-1) 4(32位)/8(64位)个字节。(signed)long long(-2^31~2^31-1)/unsigned long long(0~2^32-1) 8个字节。(signed)int(-2^31~2^31-1)/unsigned int(0~2^32-1) 4个字节(CPU最喜欢)ls -a 列举当前文件夹的所有的(包括隐藏的)
2025-07-01 20:22:05
244
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人