自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用线性链表存储num个数字,降序排列,删除重复整数

每次选取一个节点的data,与其他节点的data作比较,如果相等就删除其他节点。1.定义三个指针变量,p比较当前比较的节点,pf每次循环后指向p的前一个节点。之前提到了,线性链表的基本操作,包括创建,删除,插入,销毁灯。2.每次输入整数data,建立一个存储data的节点。其他的操作都是前面提到过的链表的基本操作。3.将data节点插入正确的位置。

2024-01-05 23:57:31 470 1

原创 关于学c语言时,关键词const的误区

p3=&i:p3本身是指向整型变量的常指针,即p3初始化后不能再指向其它的内存单元,但是可以修改p3指向的内存单元的值。*p2=&i:与p1相同,即不能修改p2指向的内存单元的值,但是可以修改p2使其指向其它的内存单元。(6)*p2=30:通过p2修改它所指向的内存单元的值,由(2)可知(6)错误。(3)p2=&j:修改p2,使其指向整型变量 j ,由(2)可知(3)没错。(5)*p3=20:通过p3将变量i的值修改为2,由(4)可知(5)没错。问题在于const在int前和在int后分别是什么意思?

2024-01-05 20:29:35 388 1

原创 单向链表的基本操作(创建,插入,删除,销毁,输出)(c语言)

然后动态建立一个空间,用pnew指向这个空间,tail指向的指针域(即结构体内存放地址的地方)存放pnew的空间;基本思想:首先创建一个头节点,让头指针和尾指针指向刚创建的空间;最后,将pnew赋值给tail;熟练掌握动态数组,结构体,指针。

2023-12-30 23:43:48 465 1

原创 [28. 找出字符串中第一个匹配项的下标]

p,q分别测量两个字符串长度,开两个循环,如果str==needle[i],外层i作为标记这个值,needle[j]访问每一个字符,haystack[i+j]则是访问相对对齐于needle的字符串。"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。类似双指针,以下标i,j来访问两个数组。

2023-12-29 21:19:57 392 1

原创 对任意长度大整数求和(模拟高精度)

【代码】对任意长度大整数求和(模拟高精度)

2023-12-25 19:04:33 51

原创 关于malloc之后free函数报错的问题

思路:再加一个指针 int* p=parr 指向malloc创建的首地址,如果free(p)成功,证明思路正确。今天学习动态内存管理malloc函数时,发现了一个小问题,再经过查阅资料,和实验验证后,终于明白了问题所在。而parr[1]时,parr指向的地址不再是malloc创建内存块的首地址,而是parr[1]这个常量地址。就算要改变也要用另外一个变量保存malloc申请的内存的地址,最后用free释放,否则会导致内存泄露。申请的内存的指针,在运用过程中指针的指向千万不要改变,

2023-12-10 14:19:36 411 1

原创 算法导论 2.3-1 插入并排算法

首先,可以先从网上了解一下calloc()函数的用法,用来创建一个内存可变的动态数组。本文使用的是哨兵的归并排序。

2023-11-16 18:47:14 35 1

原创 利用函数指针实现自定义 qsort函数

【代码】实现自定义 qsort函数。

2023-11-15 01:30:02 220 1

原创 对比传统简易计算器的计算,代码冗余问题,可以使用函数指针简化代码

一般来说要实现计算器加减乘除的功能,要在每个case语句中加入相同语句,代码冗余,效率低下。其中int (*pf)(int , int )是指针,接收函数的地址。但是使用函数指针,便可以简化代码,提高效率。另外 ,使用函数的指针数组更加简洁。

2023-11-14 18:09:31 207

原创 指针数组和数组指针

意思是 所以是 1个指针,用来指向 有5个元素的数组。它的运算结果显然是跳出整个数组,即*(pa+5)[]的优先级高于*,所以在这里的意义又不相同。意思为存放五个元素,这五个元素都是一级指针。例如 int (*pa)[5]改变一下,这样它的结果就是2了。例如 int* pa[5]指针数组:指针的数组。数组指针:数组的指针。意思是*(pa+1)

2023-11-13 17:54:20 23

原创 对于给定的一个字符串,统计其中数字字符出现的次数。

输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。对于每个测试实例,输出该串中数值的个数,每个输出占一行。

2023-10-23 16:03:12 716 3

原创 输入两个字符串a和b,将b串中的最大字符插入到a串中最小字符后面。

新手上路,大佬请指教。

2023-10-23 15:55:33 835 1

原创 输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。

while语句中加入getchar接受字符,‘n’判断是否读取字符串完毕。条件语句再分别将数字加起来。

2023-10-21 11:14:44 32 1

原创 自学日记之for循环

它为什么没有陷入死循环呢,上文提到过逻辑底层的运行规律不同,当i==5时,跳出本次循环,重新在for语句中+1继续运行,此时i=6,打印如图所示了。continue意味着跳出本次循环进入下一次循环,然而i++在continue下面,i的值无法增加陷入死循环中;由图知,其实while和for用法一直,但for的形式更加简洁;另外,我们看看continue在while和for循环中的区别。for循环的目的是为了限制循环体的执行次数,使结果更精确;for语句中若不符合循环,则直接跳出循环;用一段代码来演示一遍。

2023-08-19 15:41:40 39

原创 自学c语言笔记

判断第1个操作数是否大于或等于第2个操作数,若大于或等于则值为1,反之值为0。判断第1个操作数是否小于或等于第2个操作数,若小于或等于则值为1,反之值为0。假设两个整型数为 operand1 = 1, operand2 = 0。判断第1个操作数是否大于第2个操作数,若大于则值为1,反之值为0。判断第1个操作数是否小于第2个操作数,若小于则值为1,反之值为0。operand1 == operand2 的值为 0。= operand2 的值为 1。operand1 >= operand2 的值为 1。

2023-08-17 16:08:13 31

原创 c语言笔记

因此:字符变量不能直接赋值汉字,因为编码规则不同,汉字占的字节不同。ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节等等。所以char sex = '男' 是不对的。小知识:使用float/double时,输入语句不能使用“%d”而是用“%.2f”今天从博客了解学习了一些知识点,通过这种方式来记录所学知识\ 零碎知识、1.变量、C语言变量的生命周期和作用域。

2023-08-17 14:40:47 50 1

空空如也

空空如也

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

TA关注的人

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