C语言
文章平均质量分 60
介绍C语言基本知识和算法
Link思维践行者
numb and dying
展开
-
字符串-重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。可由子串 "abc" 重复四次构成。(或子串 "abcabc" 重复两次构成。可由子串 "ab" 重复两次构成。原创 2024-06-03 17:48:10 · 305 阅读 · 0 评论 -
字符串-KMP算法
KMP算法通过预处理模式字符串生成部分匹配表,并在搜索过程中利用这个表来指导字符比较,从而避免了不必要的比较操作,提高了搜索效率。它在处理字符串匹配问题时具有广泛的应用。代码实现// 暴力求解法int i, j;for (i = 0;i原创 2024-06-03 16:01:44 · 320 阅读 · 0 评论 -
字符串-翻转字符串里的单词
151. 反转字符串中的单词给你一个字符串 s ,请你反转字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。原创 2024-05-11 15:43:35 · 241 阅读 · 0 评论 -
字符串-反转字符串II
541. 反转字符串 II给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。原创 2024-05-10 16:40:01 · 271 阅读 · 0 评论 -
哈希表-四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0原创 2024-04-11 14:38:11 · 347 阅读 · 0 评论 -
哈希表-三数之和
不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。原创 2024-04-10 19:23:38 · 287 阅读 · 0 评论 -
哈希表-四数相加II
给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。原创 2024-04-09 18:52:27 · 404 阅读 · 0 评论 -
哈希表-两数之和
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。原创 2024-04-05 12:47:09 · 341 阅读 · 0 评论 -
哈希表-两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。原创 2024-03-28 00:35:34 · 319 阅读 · 0 评论 -
哈希表-有效的字母异位词
那看一下如何检查字符串t中是否出现了这些字符,同样在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值再做-1的操作。示例 1: 输入: s = "anagram", t = "nagaram" 输出: true。暴力的解法,两层for循环,同时还要记录字符是否重复出现,很明显时间复杂度是 O(n^2)。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 2: 输入: s = "rat", t = "car" 输出: false。再遍历 字符串s的时候,原创 2024-03-27 20:42:01 · 353 阅读 · 0 评论 -
链表-环形链表II
为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。这道题目,不仅考察对链表的操作,而且还需要一些数学运算。原创 2024-03-27 19:06:07 · 265 阅读 · 0 评论 -
字符串-反转字符串
对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。编写一个函数,其作用是将输入的字符串反转过来。输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]原创 2024-03-27 17:45:30 · 298 阅读 · 0 评论 -
两两交换链表中的节点
这道题目正常模拟就可以了。建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。原创 2024-03-27 16:59:38 · 302 阅读 · 0 评论 -
C语言实现——删除链表倒数第N个节点
双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2], n = 1 输出:[1]原创 2024-03-21 14:08:50 · 307 阅读 · 0 评论 -
Nwafu-OJ-1422 Problem T C语言实习题四——5.字符个数统计
问题 T: C语言实习题四——5.字符个数统计时间限制: 10 Sec 内存限制: 128 MB提交: 4711 解决: 1993[提交][状态][讨论版]题目描述 由键盘输入任意一串字符串,将其存入一个字符数组,统计其中的大写字母、小写字母、数字以及其他字符的个数。输入任意一串字符串输出大写字母、小写字母、数字以及其他字符的个数。样例输入abcdefg123456ABCDEFG样例输出7 7 6 0提示原创 2022-10-16 22:18:40 · 675 阅读 · 0 评论 -
Nwafu-OJ-1420 Problem R C语言实习题四——3.矩阵对角线元素求和
问题 R: C语言实习题四——3.矩阵对角线元素求和时间限制: 1 Sec 内存限制: 128 MB提交: 4145 解决: 1966[提交][状态][讨论版]题目描述输入一个5×5的数组,分别求其主对角线和辅对角线上元素之和。输入5×5的数组输出主对角线和辅对角线上元素之和样例输入1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25样例输出65 65提示主对角线为从矩阵的左上角至右下角的原创 2022-10-13 12:28:37 · 485 阅读 · 0 评论 -
Nwafu-OJ-1419 Problem Q C语言实习题四——2.简单加密程序
问题 Q: C语言实习题四——2.简单加密程序时间限制:1 Sec内存限制:128 MB题目描述由键盘任意输入一串字符,对其进行加密,加密原则为:如果为字母,将其循环右移2个字母,其他字符保持不变。输入一串字符输出加密后的字符串样例输入ab12CDxyz样例输出cd12EFzab提示1. 可用gets()和puts()输入输出字符串。2. 利用ASCII码运算进行加密。原创 2022-10-13 12:16:40 · 673 阅读 · 1 评论 -
C语言实现----基数排序
一、基数排序介绍基数排序( Radix Sort )是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。二、基数排序图文说明1.基数排序图文说明通过基数排序对数组{53,3,542,748,14,214,154,63,616}进行排序,它的示意图如下:原创 2022-10-13 11:23:16 · 3270 阅读 · 0 评论 -
C语言实现----桶排序
一、桶排序介绍桶排序( Bucket Sort )的原理很简单,它是将数组分到有限数量的桶子里。假设待排序的数组 a 中共有 N 个整数,并且已知数组 a 中数据的范围[0, MAX )。在桶排序时,创建容量为 MAX 的桶数组 r ,并将桶数组元素都初始化为0;将容量为 MAX 的桶数组中的每一个单元都看作一个"桶"。在排序时,逐个遍历数组 a ,将数组 a 的值,作为"桶数组 r "的下标。当 a 中数据被读取时,就将桶的值加1。例如,读到数组 a [3]=5,则将 r [5]的值+1。原创 2022-10-13 10:32:43 · 2068 阅读 · 0 评论 -
C语言实现----归并排序
一、归并排序介绍将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序( Merge Sort )就是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。1.从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;得到若干个长度为4的有序数列,再将它们两两合并;直接合并成一个数列为止。这样就得到了我们想要的排序结果。(参考下面的图2.从上往下的归并排序:它与"从下往上原创 2022-10-12 22:10:37 · 15795 阅读 · 6 评论 -
C语言实现----堆排序
一、堆排序介绍堆排序( Heap Sort )是指利用堆这种数据结构所设计的一种排序算法。因此,学习堆排序之前,有必要了解堆!若读者不熟悉堆,建议先了解堆,然后再来学习本章。我们知道,堆分为"最大堆"和"最小堆"。最大堆通常被用来进行"升序"排序,而最小堆通常被用来进行"降序"排序。鉴于最大堆和最小堆是对称关系,理解其中一种即可。本文将对最大堆实现的升序排序进行详细说明。看本文之前可以看看--->>B站视频讲解最大堆进行升序排序的基本思想:①初始化堆:将数列 a [1... n原创 2022-10-12 19:34:28 · 3884 阅读 · 1 评论 -
C语言实现----选择排序
选择排序( Selectionsort )是一种简单直观的排序算法。它的基本思想是:首先在未排序的数列中找到最小( or 最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小( or 最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。原创 2022-10-09 23:05:36 · 557 阅读 · 0 评论 -
C语言实现----希尔排序
一、希尔排序介绍希尔排序( ShellSort )是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因 DL .Shell 于1959年提出而得名。希尔排序实质上是一种分组插入方法。它的基本思想是:对于 n 个待排序的数列,取一个小于 n 的整数 gap ( gap 被称为步长)将待排序元素分成若干个组子序列,所有距离为 gap 的倍数的记录放在同个一组中;然后,对各组内的元素进行直接插入排序。这一趟排序完成之后,每一个组的元素都是有序的。然后减小 gap 的值,并重复执行上述原创 2022-10-07 15:12:05 · 8072 阅读 · 0 评论 -
C语言实现--快速排序
快速排序介绍快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对着两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原创 2022-10-06 17:14:47 · 18224 阅读 · 5 评论 -
C语言----冒泡排序
冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。他会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换他们的位置。这样,依次遍历之后,最大的元素就在数列的末尾!采用相同的方法在次遍历时,第二大的元素就被排列在最大元素之前。重复次操作,直到整个数列都有序为止!原创 2022-10-05 18:34:29 · 4280 阅读 · 1 评论 -
排序算法--排序算法综述
排序算法--排序算法综述,表明了各种算法在不同数据规模下,完成排序所消耗的时间(毫秒为单位),从表中可以显然看出O(n2)的排序算法比O(nlog2n)的算法时间多出几百上千倍,而且随着数据规模增大时间比也会随着增大;因为排序的数据采用随机数,顺序将被打乱,快速排序算法优先于其他排序算法。原创 2022-10-05 14:02:09 · 271 阅读 · 0 评论 -
西农大 C plus
问题 B: oop实习-2.引用传递题目描述设计一个函数,将两个浮点数传入,然后通过引用把其和、差、积传出。函数原型如下:void Math(float a,float b,float &sum,float &sub,float &pro);输入输入两个浮点数输出输出两个浮点数的和、差、积。样例输入6.5 2.3样例输出8.8 4.2 14.95答案#include <iostream>using n原创 2022-08-14 16:57:56 · 555 阅读 · 0 评论 -
西农大 C plus
问题 C: oop实习-3.默认形参值题目描述设计一个求空间两点距离的函数,要求第2个点的默认值为坐标原点。输入两个点的坐标。输出输出第一个点与原点之间的距离及输入的两个点之间的距离。样例输入1 1 1 5 5 5 样例输出1.73205 6.9282 提示#include <iostream>using namespace std;#include <cmath>int main() { double x1,原创 2022-08-14 16:56:55 · 401 阅读 · 0 评论 -
西农大 C plus
问题 D: oop实习-4.类的定义_静态常量题目描述设计并实现一个圆柱类Cylinder,要求:(1)设计两个double型的私有数据成员:高度height和底圆半径radius。(2)设计一个double型的公有静态常量数据成员pi(其值初始化为3.1415926),以及一个获取该常量的公有静态成员函数GetPI。(3)在构造函数的初始化列表中初始化高度height和底圆半径radius。(4)设计用于获取半径的成员函数GetRadius、获取高度的成员函数GetHeight、原创 2022-08-14 16:55:25 · 323 阅读 · 0 评论 -
西农大 C plus
问题 E: oop实习-5.类的定义_深拷贝题目描述设计并实现一个动态整型数组类Vect,要求:(1)实现构造函数重载,可以根据指定的元素个数动态创建初始值为0的整型数组,或根据指定的内置整型数组动态创建整型数组。(2)设计拷贝构造函数和析构函数,注意使用深拷贝。(3)设计存取指定位置的数组元素的公有成员函数,并进行下标越界,若越界则输出“out of boundary”。(4)设计获取数组元素个数的公有成员函数。(5)设计用于输出数组元素的公有成员函数,元素之间以空格分隔,最原创 2022-08-14 16:53:54 · 521 阅读 · 0 评论 -
西农大 C plus
问题 F: oop实习-6.虚基类题目描述(1)定义人员类Person:公有成员:姓名(Name);保护成员:性别(Gender),年龄(Age);构造函数和析构函数(2) 从人员类Person派生学生记录类StudentRecord:添加公有成员:学号(Number),班级(ClassName),添加静态公有成员:学生总人数(TotalCount);添加保护成员:平均成绩(Score);实现构造函数和析构函数。(3) 从人员类Person派生教师记录类TeacherRe..原创 2022-08-14 16:53:18 · 522 阅读 · 1 评论 -
单源最短路径算法—Dijkstra算法(详细介绍)
单源最短路径算法—Dijkstra算法(详细介绍),Dijkstra算法算是贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后标记这个点,在没有标记的点中找到最短的,将这个点的前驱节点记录下来,重复这个步骤,直至标记所有点。......原创 2022-07-21 08:20:18 · 4077 阅读 · 2 评论 -
C语言——扫雷游戏
C语言——扫雷游戏雷区中随机布置一定数量的地雷,玩家需要尽快找出所有不是地雷的方块,但不许踩到地雷。玩家标记所有地雷后,选择排雷结束,然后游戏判断玩家是否完成扫雷。原创 2022-07-20 11:24:47 · 1237 阅读 · 0 评论 -
C语言 ——求一个整数存储在内存中的二进制中的1的个数
C语言 ——求一个整数存储在内存中的二进制中的1的个数原创 2022-07-20 09:43:10 · 403 阅读 · 3 评论 -
C语言——三子棋游戏
C语言——三子棋是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时候会出现和棋的情况。三子棋也叫做OOXX棋,井字棋等,用“井”字分出3×3的格子,双方轮流下棋子(可以用O或者X来区别),只要将自己的三个棋子走成一条线,就算获胜。...原创 2022-07-20 09:18:32 · 818 阅读 · 0 评论 -
C语言——冒泡排序
C语言冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料的气泡最终会上浮到顶端一样,故名“冒泡排序”。.........原创 2022-07-15 10:45:02 · 347 阅读 · 0 评论 -
用C语言实现猜数游戏
用C语言实现猜数游戏电脑随机产生一个数,让用户猜这个数,如果用户猜测的数比这个随机数大,则提醒用户猜测的数偏大,如果用户猜测的数比这个随机数小,则提醒用户猜测的数偏小,直至用户猜到这个数。...原创 2022-07-15 08:50:08 · 2427 阅读 · 0 评论 -
汉诺塔问题-->递归实现
汉诺塔问题递归实现,每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。原创 2022-07-15 08:35:07 · 405 阅读 · 0 评论 -
简单Web服务器程序设计与实现
简单Web服务器程序设计与实现,实现提供静态网页服务的web服务器,实现提供cgi动态网页服务的web服务器,web服务器实现多进程服务原创 2022-07-14 08:14:17 · 4488 阅读 · 8 评论 -
C语言实现迭代实现二分查找
C语言实现迭代实现二分查找,给定一个有序数组,输入一个值,判断数组中是否有和这个值相等的元素,如果有,则输出这个元素的下标,如果没有,则输出未找到。原创 2022-07-14 08:28:40 · 391 阅读 · 0 评论