链表基本操作
链表基本操作(临时抱佛脚的笔记) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109#include <stdio.h>#include <stdlib.h>// 定义链表节点结构struct Node { int data; struct Node *next;};// 创建新节点struct Node* createNode(int data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); if (newNode == NULL) & ...
删除数字
题目描述从键盘接收一个字符串,由数字、大小写字母和空格组成。程序功能为去掉字符串中的所有数字,最后输出变更后的字符串。注意,并列的空格需要缩减为1个空格。比如键盘输入如下: (1)能够从键盘正确接收字符串;(2分) (2)能够去除数字;(4分) (3)能够合并并列的空格;(4分) (4)能够输出变更后的字符串;(2分) (5)程序能够全面正确运行;(3分) 源代码123456789101112131415161718192021222324252627282930313233343536373839404142434445#include <stdio.h>void input(char a[]) { printf("Enter a string: "); fgets(a, 100, stdin); // 使用fgets获取一行输入}void print(char a[]) { printf("%s\n", a);}#include <stdio.h>void d ...
成绩单
题目描述一份班级成绩表存储在一个TXT文件中,每行由学号、姓名、数学成绩、英语成绩、C语言成绩组成,如下: 192000101 张天天 86 76 85 192000102 李笑笑 91 88 76 … 192000130 王维维 88 75 91 编制一个程序,完成下列任务。 (1)构建一个结构体数组,来存储这个成绩表;(4分) (2)能够正确的从文件读取数据到该结构体数组;(5分) (3)能够将成绩表输出到屏幕;(4分) (4)能输出总成绩进行排序并输出排序后的结果;(7分) (5)程序架构良好、代码清晰、能够全面正确运行;(5分) 源码 单文件版 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364#include <stdio.h>struct student { long number; char name[10]; int math; int ...
Leetcode0234
回文链表题目描述给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 12输入:head = [1,2,2,1]输出:true 示例 2: 12输入:head = [1,2]输出:false 提示: 链表中节点数目在范围[1, 105] 内 0 <= Node.val <= 9 基本思路法一:复制到数组小生不才,链表使用不够熟练,先用复制链表到数组的笨方法做出来一遍。 12345678910111213141516171819202122232425262728293031323334353637383940414243/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */bool isPalindrome(struct ListNode* head) { struct ListNo ...
Leetcode0203
移除链表元素题目描述给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 12输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5] 示例 2: 12输入:head = [], val = 1输出:[] 示例 3: 12输入:head = [7,7,7,7], val = 7输出:[] 提示: 列表中的节点数目在范围 [0, 104] 内 1 <= Node.val <= 50 0 <= val <= 50 基本思路刚开始思路非常简单:检测到下一个节点是val,删除该节点。写出了下面这段蠢到家的代码: 12345678910111213141516171819/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct L ...
Leetcode0206
反转链表题目描述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 12输入:head = [1,2,3,4,5]输出:[5,4,3,2,1] 示例 2: 12输入:head = [1,2]输出:[2,1] 示例 3: 12输入:head = []输出:[] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 基本思路基本想法是把列表的首尾节点调换,即每一个指针都指向前一个节点。 代码如下: 123456789101112131415161718/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head) { struct ListNode* prev =NULL;//创建一个空头节点 ...
Leetcode83
删除排序链表中的重复元素题目描述给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 12输入:head = [1,1,2]输出:[1,2] 示例 2: 12输入:head = [1,1,2,3,3]输出:[1,2,3] 提示: 链表中节点数目在范围 [0, 300] 内 -100 <= Node.val <= 100 题目数据保证链表已经按升序 排列 基本思路根据题干描述,链表已经按照升序排列,即只需要判断前后两个节点是否相等从而确定删除与否即可。 代码如下: 123456789101112131415161718192021222324/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* head) ...
结构体编程
题目描述屎山测试第二趴 123456789101112131415161718192021222324252627282930某校的惯例是在每学期的期末考试之后发放奖学金。发 放的奖学金共有五种,每项奖学金获取的条件分别如下:1) 院士奖学金:期末平均成绩高于 80 分(>80),并且在本学期内发表 1 篇或1 篇以上论文的学生每人均可获得 8000 元;2) 五四奖学金:期末平均成绩高于 85 分(>85),并且班级评议成绩高于 80 分(>80)的学生每人均可获得 4000 元;3) 成绩优秀奖:期末平均成绩高于 90 分(>90)的学生每人均可获得 2000 元;4) 西部奖学金:期末平均成绩高于 85 分(>85)的西部省份学生每人均可获得1000 元;5) 班级贡献奖:班级评议成绩高于 80 分(>80)的学生干部每人均可获得 850元;只要符合上述条件就可获得相应的奖项,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚明的期末平均成绩是 87 分,班级评议成绩 82 分,同时他还是一位学生干部,那么他可以同时获得五 ...
718校内赛技术报告
此篇博客用于记录校内赛的技术细节和感悟(屎山预警!!!) 1.1 红外对管排布见下图: 其中4 5作为循迹灯,其余全部用于路口判断。 1.1.1 循迹利用左右循迹灯实现循迹,使用了PID算法,只使用了P和D,详细说明见2.1。 1.1.2 路口判断逻辑利用1 2 3 0四个红外对管实现对路口的识别。 另外规定ADC的值>1900为完全踩上线,ADC的值小于lowx为完全没踩上线,ADC的值大于lowx+200(需要大些)为正在踩上线。 我们对路口的分类如下: 1.2 机械臂构成:亚克力板,三个MG90S舵机,胶带,热熔胶,夹子,螺丝,螺母。 自由度:3 设计想法:为了便于能量块的夹取和定点投放 2. 软件注:此部分主要内容及解释都在代码注释中 2.1 宏及全局变量12345678910111213141516171819202122232425262728293031323334353637383940414243#include "stm32f10x.h"#include "Delay.h"#include "PWM.h& ...
LeetCode0498
对角线遍历题目描述给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 1: 12输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4,7,5,3,6,8,9] 示例 2: 12输入:mat = [[1,2],[3,4]]输出:[1,2,3,4] 提示: m == mat.length n == mat[i].length 1 <= m, n <= 104 1 <= m * n <= 104 -105 <= mat[i][j] <= 105 基本思路根据题目要求,矩阵按照对角线进行遍历。设矩阵的行数为 m, 矩阵的列数为 n, 我们仔细观察对角线遍历的规律可以得到如下信息: 根据以上观察得出的结论,我们直接模拟遍历所有的对角线即可。 代码实现如下: 123456789101112131415161718192021222324252627282930313233343536373839int* findDiagonalOrder(int** mat, ...
