自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ✰✰✰数据结构代码题必会解题思路及举例

删除节点:分为三种情况处理:删除叶子节点、删除只有一个子节点的节点、删除有两个子节点的节点。- 插入节点:创建新节点并将其指针指向前一个节点,将前一个节点的指针指向新节点,将新节点的指针指向下一个节点即可。- 合并链表:使用两个指针分别指向两个链表的头节点,比较节点值大小,将较小的节点连接到新链表中,移动指针继续比较。- 删除节点:找到要删除的节点的前一个节点,将其指针指向要删除节点的下一个节点,然后释放要删除的节点。- 插入节点:找到节点要插入的位置,创建新节点并将其挂载到对应位置的子节点上。

2023-12-17 21:06:23 898

原创 C语言实现在顺序表中找到最大值

然后在主函数中,首先输入顺序表的大小,然后输入顺序表的元素,最后通过调用`findMax`函数找到最大值并输出。// 调用findMax函数找到最大值。if (arr[i] > max) { // 如果当前元素大于最大值。// 输入顺序表的元素。// 输入顺序表的大小。printf("最大值为:%d\n", maxValue);printf("请输入顺序表的大小:");printf("请输入顺序表的元素:");

2023-12-13 16:08:15 1178

原创 C语言中常用的库函数和头文件

isalpha、isdigit:判断字符是否是字母、数字。- isupper、islower:判断字符是否是大写、小写。- strchr、strrchr:在字符串中查找特定字符。- fprintf、fscanf:格式化读写文件。- strcpy、strncpy:复制字符串。- strcat、strncat:连接字符串。- strcmp、strncmp:比较字符串。- floor、ceil:向下取整、向上取整。- fopen、fclose:打开关闭文件。- fgets、fputs:读写字符串。

2023-12-11 20:07:13 1110

原创 结构体例题—打印平均成绩,以及最高分

题目:有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入 10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括 学号、姓名、3门课的成绩、平均分数), 要求用 input函数输入10个学生数据;用max函 数找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。printf("3门课的总平均成绩为:%.2f\n", avg);printf("请输入学生的学号、姓名和3门课的成绩:\n");printf("平均成绩最高的学生的数据为:\n");

2023-12-10 14:23:21 769

原创 C程序设计—输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。

else if (isspace(str[i])) // 如果是空格。else if (isdigit(str[i])) // 如果是数字。if (isalpha(str[i])) // 如果是字母。printf("其他字符个数:%d\n", others);// 其他字符个数加1。printf("空格个数:%d\n", space);printf("数字个数:%d\n", digit);

2023-12-08 12:29:03 1039

原创 定义一个学生类,其中有3个私有数据成员学号、姓名、成绩,以及若于成员。 函数实现对学生数据的赋值和输出。

printf("学号:%d, 姓名:%s, 成绩:%.2f\n", student->stuNum, student->name, student->score);initializeStudent(&stu1, 123456, "张三", 95.5);// 姓名,假设最长为20个字符。int stuNum;// 创建一个学生对象。// 初始化学生信息。// 初始化学生信息。

2023-12-07 09:09:03 1299

原创 if与switch语句的运用—输出成绩

printf("成绩等级为A\n");// 输出成绩等级A。printf("成绩等级为B\n");// 输出成绩等级B。printf("成绩等级为C\n");// 输出成绩等级C。printf("成绩等级为D\n");// 输出成绩等级D。printf("成绩等级为E\n");printf("成绩等级为A\n");printf("成绩等级为B\n");printf("成绩等级为C\n");printf("成绩等级为D\n");// 输出成绩等级D。printf("成绩等级为E\n");

2023-12-06 11:41:19 754

原创 输出完全二叉树中某个结点的双亲和所有子孙。假设完全二叉树的顺序存储在一维数组A[n]中。

首先定义两个函数,`getParent`函数用于获取指定结点的双亲结点的索引,`printDescendants`函数用于输出指定结点的所有子孙。printf("结点%d的右子节点为:%d\n", index, A[rightChild]);printf("结点%d的左子节点为:%d\n", index, A[leftChild]);printf("结点%d的双亲结点为:%d\n", index, A[parentIndex]);// 需要输出双亲和所有子孙的结点索引,这里以索引为2的结点为例。

2023-12-05 10:24:37 571

原创 文件score.text,结构体中包括学生名字学生成绩,把成绩按从高到低排序显示输出个数:名字 分数

/ 显示排序后的学生成绩。// 对学生成绩进行排序。文件score.text,结构体中包括学生名字学生成绩,把成绩按从高。// 排序学生成绩,按照从高到低的顺序。{"张三", 85},{"李四", 77},{"王五", 92},{"赵六", 68},{"孙七", 79}到低排序显示输出个数:名字 分数。// 假设有5个学生。// 交换两个学生的位置。// 定义学生结构体。

2023-12-04 14:07:47 659

原创 实现将线性表分割为三个循环链表,每个循环链表表示的线性表中只含一类字符。

然后在`main`函数中,我们创建了表示线性链表和三个循环链表的指针,并调用`splitList`函数将线性表分割为三个循环链表。// 根据数据类型插入到对应的循环链表中。// 调用分割函数,将线性表分割为三个循环链表。// 将一个节点插入到循环链表的尾部。// 分割线性表为三个循环链表。// 定义线性链表节点结构。// 初始化一个循环链表。

2023-12-03 07:42:27 697

原创 判断一个字符序列是否为回文————利用使用双指针法

/ 假设输入的字符序列长度不超过1000。// 如果全部字符都比较完毕,没有返回0,则说明是回文,返回1表示是回文。// 如果左右指针所指字符不相等,则返回0表示不是回文。printf("请输入一个字符序列以@为结束符:");// 移动左右指针继续判断下一对字符。printf("不是回文\n");printf("是回文\n");// 读入字符序列直到遇到'@'为止。// 循环判断左右指针字符是否相等。// 判断输入的字符序列是否为回文。

2023-12-02 16:09:07 958

原创 C语言实现输入5个学生的4门课成绩,并计算每个学生的平均分并按照平均分从高到低排序。

上述代码定义了两个函数:`calculateAverage()`用于计算每个学生的平均分,`sortAverages()`用于将平均分从高到低排序。在`main()`函数中,我们首先定义了需要输入的学生数量和成绩数组,然后通过循环依次输入每个学生的4门课成绩。接着调用`calculateAverage()`函数计算每个学生的平均分,并将结果存储在一个平均分数组中。最后,我们调用`sortAverages()`函数对平均分数组进行排序,并输出排序后的结果。// 计算每个学生的平均分。

2023-12-01 09:06:55 1428

原创 快速排序算法的代码及算法思想

通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据小,然后再对这两部分数据分别进行快速排序,递归地重复此过程,直到整个序列有序。// 遍历数组,并将小于基准元素的值放到较小元素区域。// 对基准元素左侧的子数组进行快速排序。// 对基准元素右侧的子数组进行快速排序。// 分割函数,选取基准元素并调整元素位置。// 选取最右侧元素作为基准元素。// 定义较小元素所在位置的索引。// 将基准元素放到合适的位置。// 基准元素的索引。// 返回基准元素的索引。

2023-11-30 14:41:48 604

原创 基本的 B 树和 B+ 树操作的代码

/ 当前节点存储的键的数量。// 当前节点存储的键的数量。// 是否为叶子节点。// 如果拆分的叶子节点为根节点,需要创建新的根节点。// 节点为叶子节点,直接将键插入合适位置。// 节点为内部节点,递归向下插入合适位置。// 在父节点中插入拆分出的键和子节点指针。// 寻找拆分节点在父节点中的位置。

2023-11-29 07:53:57 607

原创 如何使用邻接矩阵和邻接表来表示无向图和有向图

/ 由于是无向图,所以需要对称地设置另一条边。// 初始化所有边为0。// 初始化邻接表为空。// 下一个连接的边。// 添加无向图的边。// 添加有向图的边。

2023-11-28 14:14:40 652

原创 六道经典的C语言选择结构题型

printf("%d的阶乘为%llu\n", num, factorial);printf("%d不是回文数\n", originalNum);printf("%d是回文数\n", originalNum);printf("最大值为:%d\n", num1);printf("最大值为:%d\n", num2);printf("%d不是质数\n", num);printf("%d是偶数\n", num);printf("%d是奇数\n", num);printf("%d是质数\n", num);

2023-11-27 13:56:57 932

原创 文件的写入和读取操作

在`writeToFile()`函数中,程序创建一个新的文件(如果文件不存在),并将用户输入的数据写入文件中。在`readFromFile()`函数中,程序打开已存在的文件,并将文件中的内容逐行显示在屏幕上。printf("无效的选择\n");printf("请输入要写入文件的内容:\n");printf("文件打开失败\n");printf("文件打开失败\n");printf("1. 写入文件\n");printf("2. 读取文件\n");printf("请选择操作:\n");

2023-11-26 18:13:32 691

原创 文件的基本操作,打开、写入、读取和关闭文件。

printf("文件内容:%s", content);printf("原始文件打开失败\n");printf("复制文件打开失败\n");printf("文件打开失败\n");printf("文件打开失败\n");printf("文件复制成功\n");

2023-11-25 19:36:24 918

原创 用最简单的c语言代码实现猴子吃桃问题

根据题目描述,我们从第九天的桃子数量开始,逆推求解第一天共摘了多少个桃子。每天的剩余桃子数量等于前一天的剩余桃子数量加1后乘以2。在这个例子里,输出结果将会显示第一天共摘了多少个桃子。// 每天剩余桃子数量等于前一天剩余桃子数量加1后乘2。printf("第一天共摘了 %d 个桃子\n", day);// 第九天的桃子数量。

2023-11-24 07:46:25 571

原创 整理学习几种数据结构内部排序算法的代码(C语言)

上述代码实现了希尔排序算法,通过不断缩小增量来对数组进行排序。此处使用了Knuth(洗牌算法)序列来计算增量值,并且在每个增量下都使用插入排序来对子数组进行排序。输出结果为原始数组和排序后的数组。printf("\n排序后的数组:");// 对每个间隔进行插入排序。// 使用Knuth序列计算增量值。printf("原始数组:");

2023-11-23 16:10:34 306

原创 使用C语言编写的程序,实现输入10个学生的数据,计算3门课的总平均分,并找出最高分的学生数据。

printf(“成绩:%.2f %.2f %.2f\n”, maxStudent.score1, maxStudent.score2, maxStudent.score3);printf(“平均分数:%.2f\n”, (maxStudent.score1 + maxStudent.score2 + maxStudent.score3) / 3);printf(“请输入第%d个学生的3门课的成绩:”, i + 1);printf(“请输入第%d个学生的姓名:”, i + 1);// 找出最高分的学生数据。

2023-11-22 14:55:09 1133

原创 设单链表中有仅三类字符的数据元素(大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。

其中,大写字母链表(upperList)、数字链表(digitList)和其他字符链表(otherList)分别用于存储相应类型的字符。`Upper Case List`存储了大写字母'A'、'C',`Digit List`存储了数字'1'、'2'、'3',`Other List`存储了其他字符'b'、'%'// 拆分原单链表为三个链表。// 释放链表节点内存。// 拆分原单链表为三个链表。// 定义三个单链表。// 定义单链表节点结构体。// 向链表末尾添加节点。// 释放链表节点内存。

2023-11-22 14:32:51 1050

原创 用C语言编写的程序,实现从文件中读取整数n,然后动态分配存储n个双精度实数的存储空间,并计算该数组的平均值

printf("数组的平均值为:%lf\n", average);printf("无法打开文件。printf("内存分配失败。// 从文件读取n个实数并存入数组。

2023-11-21 08:03:33 714

原创 求从根节点到p所指结点之间的路径

6. 若出栈的结点是目标结点p,则辅助栈中保存的结点即为从根节点到p所指结点之间的路径。// 若当前结点是叶子结点或者其右孩子已经被访问过,则该结点可以出栈。// 给定结点p为node2。// 上一次访问的结点。5. 若当前结点是叶子结点或者其右孩子已经被访问过,则该结点可以出栈。2. 当访问到结点p时,说明从根节点到p所指结点之间的路径已经找到。// 出栈的结点是目标结点p,结束遍历。// 遍历到左子树最底部,将遇到的结点入栈。

2023-11-20 14:47:40 300

原创 计算二叉树中具有两个子节点的节点数量

3. 然后递归地调用函数计算左子节点和右子节点具有两个子节点的节点数量,并将两者相加。2. 对于非空节点,我们首先判断该节点是否同时具有左右子节点,如果是,将计数器加1。printf("具有两个子节点的节点数量为:%d\n", result);1. 对于每个节点,先判断是否为空,若为空,则返回0。printf("内存分配失败\n");// 计算具有两个子节点的节点数量。// 计算具有两个子节点的节点数量。4. 最后返回计数器的值即可。// 二叉树结点定义。// 创建二叉树结点。

2023-11-19 11:38:40 272 1

原创 图的领接矩阵存储及图的遍历算法

/ 标记当前顶点已访问。// 从第一个顶点开始深度优先遍历。// 累计容纳人数和停靠火车总数。// 添加火车站之间的关系。// 添加火车站信息。// 初始化访问数组。// 定义图的最大顶点数。// 定义火车站结构体。// 定义图的结构体。// 深度优先遍历图。

2023-11-18 09:13:21 264 1

原创 输出10000以内的回文素数,并统计个数。如:2、11、97879 等。

使用`isPrime()`函数来判断一个数是否为素数,使用`reverseNumber()`函数来翻转一个数字。然后,在`countPalindromePrimes()`函数中遍历2到10000之间的数字,对每个数字进行素数和回文性质的判断,并输出回文素数。最后,在`main()`函数中调用`countPalindromePrimes()`函数,并输出总的回文素数数量。

2023-11-17 12:33:33 396

原创 将所有奇数移动到偶数前面的算法,要求时间复杂度最小,且辅助空间最少(双指针法)

2. 当left指针所指元素为奇数且right指针所指元素为偶数时,交换两个元素的位置,并同时移动left和right指针。3. 当left指针所指元素为奇数且right指针所指元素也为奇数时,只移动right指针,直到找到一个偶数为止。4. 当left指针所指元素为偶数且right指针所指元素为奇数时,只移动left指针,直到找到下一个奇数为止。5. 重复步骤2至步骤4,直到left指针和right指针相遇(left >= right)。printf("移动后的数组:");

2023-11-16 15:23:11 447 1

原创 求二叉树高度和统计叶子节点数的代码(可运行)

printf("二叉树的叶子节点数为:%d\n", leafCount);printf("二叉树的高度为:%d\n", height);printf("内存分配失败!// 统计二叉树的叶子节点数。// 创建一个新的二叉树节点。// 统计二叉树的叶子节点数。// 构建一棵二叉树。// 求二叉树的高度。// 二叉树节点结构体。// 计算二叉树的高度。

2023-11-15 16:54:35 192 1

原创 计算树的单节点个数#C语言代码#递归

/ 当前节点的左子树和右子树单节点个数相同,则当前节点是单节点节点,返回左子树单节点个数即可。// 递归计算右子树单节点个数。// 递归计算左子树单节点个数。// 如果当前节点的左子树和右子树单节点个数不同,则当前节点不是单节点节点。// 计算树的单节点个数并输出结果。// 定义树的节点结构体。// 计算树的单节点个数。

2023-11-15 16:40:32 56 1

原创 几种常考的链表题型及代码示例

2. 删除链表倒数第k个节点。3. 检测链表是否有环。4. 合并两个有序链表。

2023-11-12 16:53:50 456

原创 两个有序单链表的合并排序算法。c语言版

然后通过比较两个链表的头节点值,确定合并后的链表D的头节点,并将对应链表的指针向后移动。最后,我们将剩下的节点链接到合并后的链表D中,并返回链表D的头节点。如果两个链表都不为空,则创建一个新的链表用于保存合并结果,并设置一个尾部指针来方便链表节点的链接。然后通过比较两个链表的头节点值,确定合并后的链表的头节点,并将对应链表的指针向后移动。最后,我们将剩下的节点链接到合并后的链表中,并返回合并后的链表头节点。// 依次比较两个链表的节点值,将较小的节点链接到合并链表中。

2023-11-11 17:40:48 883 1

原创 C语言文件的操作(适用于考研c程序设计)

下面是一个示例程序,演示了如何将20位同学的信息写入名为 "student.dat" 的文件,并从文件中读取学号在 minnum~maxnum 之间的学生信息并显示出来。printf("学号在 %d~%d 之间的学生信息:\n", minnum, maxnum);printf("姓名:%s\n", student.name);printf("年龄:%d\n", student.age);printf("学号:%d\n", student.id);// 假设已经初始化了20位同学的信息。

2023-11-10 15:48:18 104

原创 彻底学会常见的位运算与进制转换

常见的位运算操作包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移()。2. 按位或(|):对两个二进制数的每一位进行或操作,只要两个位中有一个为1时结果位就为1,否则为0。3. 按位异或(^):对两个二进制数的每一位进行异或操作,如果两个位相同则结果位为0,不同则为1。1. 按位与(&):对两个二进制数的每一位进行与操作,只有两个位都是1时结果位才为1,否则为0。4. 按位取反(~):对一个二进制数的每一位进行取反操作,将1变为0,0变为1。

2023-11-09 19:41:54 97 1

原创 输出2到2000之间的所有素数,并且每行输出5个数

上述代码使用is_prime函数来判断一个数是否为素数。对于一个大于等于2的数n,如果存在一个小于等于sqrt(n)的正整数能够整除n,则n不是素数。如果不存在这样的整数,则n是素数。我们遍历2到sqrt(n)(包含边界)以内的正整数检查能否整除n,若存在满足条件的数则n不是素数,否则n是素数。

2023-11-08 19:35:43 844 1

原创 从键盘输入n个数,对这n个数从大到小进行排序(冒泡排序)

#include<stdio.h>void fun(int a[],int n){ int i,j,t; for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++){ if(a[j]<a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } }}

2023-11-08 19:10:42 2280 1

原创 数据结构 C语言版 基础必会知识点(自用版)

二叉查找树(Binary Search Tree,BST):左子树上所有节点的关键字均小于根节点的关键字,右子树上所有节点的关键字均大于根节点的关键字。- 队列是一种先进先出(First In First Out, FIFO)的线性表,可以在表的一端(队尾)添加元素,在另一端(队头)删除元素。- 广义表的基本结构包括原子(Atom)和表(List),原子作为最基本的数据单位,而表则是元素的逻辑结构。- 完全二叉树:除了最底层,其他层的节点个数都达到最大值,且最底层的节点都集中在靠左的位置。

2023-11-07 18:38:38 466

原创 计算所有数据域为x的结点个数的函数 #数据结构

/ 从第一个结点开始遍历。// 移动到下一个结点。// 数据域为x,计数加一。// 计算所有数据域为x的结点个数的函数。// 定义带头结点的单链表结点结构。

2023-11-07 17:10:40 101 1

原创 计算二叉树叶子节点数的递归算法

/ 计算二叉树叶子结点数的递归函数。// 定义二叉树结点结构。

2023-11-07 17:05:27 140 1

原创 C语言实现后续非递归遍历一棵树的代码—使用栈来实现。(可运行)

在以上代码中,我们首先定义了树节点的数据结构TreeNode,以及栈的数据结构Stack。然后,通过定义相应的操作函数来实现栈的基本操作。最后,我们定义了postorderTraversal函数来实现后续遍历的非递归实现。在主函数中,我们创建一棵树,并调用postorderTraversal`函数进行后续遍历,并将结果打印出来。需要注意的是,在使用之后,需要及时释放内存,避免内存泄漏。// 定义树节点的数据结构。// 定义栈的数据结构。// 判断栈是否为空。// 判断栈是否已满。

2023-11-06 16:57:21 44 1

空空如也

空空如也

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

TA关注的人

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