自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 问答 (1)
  • 收藏
  • 关注

原创 C/C++每日一练:图的邻接矩阵和邻接表表示

图是一种非线性数据结构,由和组成。可以将图抽象地表示为一组和一组的集合。以下示例展示了一个包含 5 个顶点和 7 条边的图。将顶点看作节点,边看作连接各个节点的引用(指针),就可以将图看作一种从链表拓展而来的数据结构。如图所示,相较于和的自由度更高,因而更为复杂。

2024-12-09 16:46:27 826

原创 C/C++每日一练:合并K个有序链表

本篇博客将探讨如何 “合并K个有序链表” 这一经典问题。本文将从题目要求、解题思路、过程解析和相关知识点逐步展开,同时提供详细注释的代码示例。

2024-12-01 18:54:49 857

原创 C/C++每日一练:删除链表的倒数第N个节点

链表是一种线性数据结构,由一系列节点(Node)通过指针链接在一起。

2024-11-30 19:30:46 361

原创 C/C++ 每日一练:在矩阵中查找特定值

本次练习将解决一个经典问题——在一个二维矩阵中查找特定的值。通过这个练习,可以更好地掌握二维数组的操作,以及优化算法的设计。给定一个二维矩阵 matrix,每行从左到右递增排序,每列从上到下递增排序,以及一个目标值 target。编写一个函数来判断目标值是否存在于矩阵中。如果存在,返回 true;否则,返回 false。

2024-11-26 18:31:04 566

原创 C/C++ 每日一练:实现字符串的大小写转换

实现一个函数,将字符串中的所有字母的大小写进行转换,即将大写字母转换为小写字母,小写字母转换为大写字母,非字母字符保持不变。

2024-11-24 19:11:11 567

原创 C/C++每日一练:查找链表的中间节点

链表是一种线性数据结构,由一系列节点(Node)通过指针链接在一起。给定一个单链表,编写一个算法来查找链表的中间节点。如果链表长度为奇数,则返回唯一的中间节点;如果为偶数,则返回两个中间节点中的第一个。这种方法效率高且不需要额外的空间,适合单链表查找问题。假设链表为:1 -> 2 -> 3 -> 4 -> 5。假设链表为:1 -> 2 -> 3 -> 4。寻找链表的中间节点可以用。

2024-11-12 12:39:15 906

原创 C/C++每日一练:编写一个查找子串的位置函数

编写一个函数,用于在一个字符串中查找一个子串的位置。如果找到子串,则返回子串在主字符串中第一次出现的位置(从0开始计数);如果未找到子串,则返回-1。

2024-11-12 10:47:52 803

原创 C/C++ 每日一练:二叉树的先序遍历

二叉树是一种树状数据结构,非线性数据结构,代表“祖先”与“后代”之间的派生关系,体现了“一分为二”的分治逻辑。节点值:存储该节点的数据。左子节点(left-child node):指向该节点左侧的子树或为空。右子节点(right-child node):指向该节点右侧的子树或为空。/* 二叉树节点结构体 */int val;// 节点值// 左子节点指针// 右子节点指针当给定一个二叉树的节点时,将该节点的左子节点及其以下节点形成的树称为该节点的左子树(left subtree),同理可得。

2024-11-01 19:03:29 1031

原创 C/C++每日一练:实现选择排序

实现一个选择排序算法,用于对整数数组进行升序排序。输入是一个包含若干整数的数组,输出是排序后的数组。要求在原数组上进行排序,不借助额外的数组空间(即就地排序)。选择排序的基本思想是:每次从未排序部分选择最小的元素,将其放到已排序部分的末尾。这样经过多轮操作后,整个数组会被逐步排好序。假设有一个数组 arr,长度为 n。,其中 n 是数组长度,不适合大数据集的排序,适合于元素较少且对性能要求不高的场景。选择排序是一种简单直观的排序算法,时间复杂度为。

2024-10-28 17:58:03 823

原创 C/C++ 每日一练:计算斐波那契数列的第 n 项(递归、记忆化、迭代)

因此,斐波那契数列的前几项为:1, 1, 2, 3, 5, 8, 13, 21, 34, ...。斐波那契数列在自然界、艺术和数学中都有广泛的应用,例如兔子繁殖问题、植物生长、黄金分割等,是数学中一种典型的递推数列。与递归相比,迭代法无需栈空间,时间复杂度为 O(n),空间复杂度为 O(1)。记忆化递归是对递归方法的优化。递归法的核心思想是将一个大的问题分解成两个较小的子问题,再继续递归地分解,直到到达递归终止条件。第 n 项 F(n) = F(n-1) + F(n-2),其中 n > 2。

2024-10-27 18:30:17 2763

原创 C/C++ 每日一练:二分查找

二分查找是一种高效的查找算法,用于在有序数组中定位目标元素的位置。它的核心思想是每次查找时将范围缩小一半。

2024-10-26 17:58:43 527

原创 C/C++每日一练:实现冒泡排序

冒泡排序是一种简单直观的排序算法。其基本思想是通过多次遍历数组,逐步将未排序部分中的最大或最小元素“冒泡”到数组的一端,直到整个数组有序。编写一个程序,实现冒泡排序算法。给定一个由 n 个整数组成的数组,要求通过冒泡排序对数组从小到大进行排序。一个整数数组,长度为 n,数组中的元素可能是正数或负数。按照升序排序后的数组。

2024-10-24 17:35:55 1070 2

原创 C/C++每日一练:实现一个环形队列

环形队列是对普通队列的一种优化,它使用一个固定大小的数组来存储数据。当队列的尾部到达数组末尾时,它会“环绕”到数组的开头,从而高效地利用空间。在环形队列中,当队列满时,rear 和 front 的位置关系非常特殊。与普通队列不同的是,环形队列的末尾与头部相连,使得当队列满时,队列可以循环使用。最先进入队列的元素最先被处理,而后加入的元素则排在队列的末尾。下面将展示从空队列到满队列,以及出队和入队操作动态管理队列中的元素的状态变化。的位置空缺(在第4步已被出队),但实际上不能再插入新元素,因为队列已满。

2024-10-22 19:04:34 1249

原创 C/C++ 每日一练:单链表的反转

首先,需要定义一个结构体来表示链表节点,其中包含存储数据的字段和指向下一个节点的指针。

2024-10-21 18:39:46 1060

原创 C/C++每日一练:合并两个有序数组

给定两个已经排好序(从小到大)的数组 arr1 和 arr2,将它们合并为一个新的有序数组,并返回结果。要求最终的数组仍然是从小到大排序的,且不使用额外的排序函数。两个升序排序的数组 arr1 和 arr2 ,长度分别为 m 和 n。一个包含所有元素并且升序排序的新数组。

2024-10-20 18:08:26 1580

原创 C/C++每日一练:编写一个栈数据结构

通过编写栈(Stack)数据结构,提升对基本数据结构的理解和运用。这也是掌握更复杂数据结构与算法的基础。栈是计算机科学中的一个重要概念,经常出现在许多算法和应用中。

2024-10-19 19:10:18 687

原创 C/C++ 每日一练:实现一个字符串(C 风格)反转函数

编写一个函数,接受一个字符串作为输入,并返回该字符串的反转版本。例如,输入字符串 "hello" 应输出 "olleh"。

2024-10-18 19:19:30 1354

原创 C/C++ 每日一练:查找数组中的最大和最小元素

编程中,查找数组中的最大和最小元素,是一个常见且基础的编程问题,可以帮助理解数组的遍历、条件判断等基本操作。

2024-10-17 19:26:10 240

原创 C/C++ 每日一练:实现一个动态数组(支持增、删、查、改操作)

在C/C++编程中,数组是最基础的数据结构之一。然而,C/C++中的原生数组有一个限制:数组的大小在声明后是固定的,无法在运行时根据需要调整。这给处理可变长度数据带来了不便。为了克服这个限制,实现一个“动态数组”,它允许我们在需要时动态增减元素,并提供增、删、查、改四种基本操作。

2024-10-15 19:15:59 1695

原创 C~排序算法

在C/C++中,有多种排序算法可供选择,每种算法都有其特定的应用场景和特点。下面介绍几种常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序,并给出相应的示例代码和解释。

2024-09-27 14:59:03 1343

原创 【嵌入式】keil5安装(同时兼容C51和STM32)

最近在开发STM32的时候,安装Keil5,遇到STM32和C51的共存的问题,在网上找了很多方法,又遇到一些bug,最终还是弄好了。因此将处理的过程记录下来,希望对遇到相同问题的朋友一些启发。

2024-04-21 00:08:55 18241 9

原创 深入剖析:正则表达式的奥秘

正则表达式(Regular Expressions)是一种强大的文本处理工具,一种用于匹配文本模式的字符串。它由特定的字符和操作符组成,用于定义一个搜索模式。这些搜索模式可以用于文本搜索、替换、验证和提取数据等多种用途。以下是一个简单的示例:在写用户注册表单时,用户名只允许包含字符、数字、下划线_和连接字符 -,并设置用户名的长度为3~15个字符,这时候就可以使用以下正则表达式:/^[a-z0-9_-]{3,15}$/ 来设定。字符串长度在 3 到 15 个字符之间。

2023-11-05 10:40:49 632

原创 Linux sed命令

在Linux系统中,有许多强大的文本处理工具,其中之一就是sed(Stream Editor)命令。sed是一个用于对文本进行编辑、替换、删除和过滤操作的命令行工具,一次处理一行内容。它具有强大的正则表达式支持和灵活的文本处理功能。本文将深入介绍sed命令的各种用法和功能,包括常见的文本替换、删除、插入等操作,以及正则表达式的运用。

2023-10-12 01:27:55 738

原创 Linux 中的 grep 命令

grep 命令是 Linux 系统中一个非常有用的文本搜索工具,它允许你根据指定的模式搜索文件中的文本。本文介绍了 grep 命令的基本用法、常用选项和示例,以及如何使用正则表达式进行高级搜索。希望这些信息对你在 Linux 系统中的文本搜索任务中有所帮助。关于 grep 命令的详细信息,可以查阅 man grep 命令来获取更多的文档和选项说明。

2023-10-09 18:11:54 788

原创 深入了解 Linux 中的 AWK 命令:文本处理的瑞士军刀

在Linux和Unix操作系统中,文本处理是一个常见的任务。AWK命令是一个强大的文本处理工具,专门进行文本截取和分析,它允许你在文本文件中查找、过滤、处理和格式化数据。本文将深入介绍Linux中的AWK命令,让你了解其基本用法和高级功能,以便更高效地处理文本数据。

2023-10-02 00:04:53 903

原创 Linux基础命令汇总

请注意,rpm 命令用于管理RPM软件包,而不同的Linux发行版可能使用不同的包管理系统(如Debian的APT或Fedora的DNF)。请注意,apt 命令是用于Debian包管理系统的工具,而在不同的Linux发行版中可能有不同的包管理工具和命令。rpm 命令是在基于RPM包管理系统的Linux系统中用于管理软件包的命令。因此,当你运行 find 起始目录 -type f 命令时,它会搜索起始目录及其子目录中的普通文件,并将它们列出或执行其他操作,具体取决于你的 find 命令的后续操作。

2023-09-29 16:03:11 237

原创 Linux 磁盘管理

Linux 系统的磁盘管理直接关系到整个系统的性能表现。磁盘管理常用三个命令为: df、du 和 fdisk。

2023-09-26 21:54:57 2339

原创 Linux 用户 & 用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。每个用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

2023-09-24 00:22:09 405

原创 Linux 文件 & 目录管理 & 链接

Linux 系统是一种典型的多用户系统,为了保护系统的安全性,不同的用户拥有不同的地位和权限。Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

2023-09-20 03:55:25 789

原创 Linux 远程登录(Xshell7)

为什么需要远程登录Linux?因为通常在公司做开发的时候,Linux 一般作为服务器使用,而服务器一般放在机房,linux服务器是开发小组共享,且正式上线的项目是运行在公网,因此需要远程登录到Liux进行项日管理或者开发。

2023-09-19 03:05:56 890

原创 Linux 忘记root密码解决方法(CentOS7.9)

忘记Linux系统的root密码,可以不用重新安装系统,进入单用户模式重新更改一下root密码即可。

2023-09-18 10:45:22 1866

原创 Linux 系统目录结构 & 终端

在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。:这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。

2023-09-17 02:43:13 347

原创 Linux 简介 & 启动过程

Linux 是一套免费使用和自由传播的开放源码的类 UNIX 操作系统,英文解释为:。1991 年由林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的,主要受到 Minix 和 Unix 思想的启发。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

2023-09-16 11:47:42 590

原创 C++ STL & 标准库

Vector是最常用的容器之一,是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组,因为其大小是根据实时更新而变化的。Vector 标识符Vector 标识符(最大容量)Vector 标识符(最大容量,初始所有值)Vector v(i,i+2);//得到i索引值为3以后的值//二维向量,这里最外的要有空格。

2023-09-14 14:45:53 585

原创 C++ 多线程

多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。和多线程程序包含可以同时运行的两个或多个部分,这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径。

2023-09-13 17:17:10 507 1

原创 Windows10环境下安装VMware虚拟机来安装 CentOs7

硬件:因为是在宿主机上运行虚拟化软件VMware安装centos,所以对宿主机的配置有一定的要求。最起码i5CPU双核、硬盘500G、内存4G以上。镜像:CentOS7 ,下载地址,推荐阿里的镜像,点击下载即可。注:建议安装64位Linux系统。

2023-09-08 03:08:04 565

原创 C++ 信号处理

信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 中。

2023-09-07 00:37:51 863 1

原创 C++ 预处理器

宏描述__LINE__这会在程序编译时包含当前行号。__FILE__这会在程序编译时包含当前文件名。__DATE__这会包含一个形式为 month/day/year 的字符串,它表示把源文件转换为目标代码的日期。__TIME__这会包含一个形式为 hour:minute:second 的字符串,它表示程序被编译的时间。return 0;

2023-09-06 17:57:32 276

原创 C++ 命名空间 & 模板

命名空间的定义使用关键字namespace// 代码声明// code 可以是变量或函数/* 第一个命名空间 *//* 第二个命名空间 */int main()// 调用第一个命名空间中的函数// 调用第二个命名空间中的函数return 0;执行结果如下:Vector是最常用的容器之一,是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。

2023-09-05 23:18:23 914

原创 C++ 动态内存

由于很多时候无法提前预知存储某个定义变量中的特定信息需要多少内存,所需内存的大小需要在运行时才能确定。因此,在 C++ 中可以使用运算符为给定类型的变量在运行时分配堆内的内存,并返回所分配空间的地址。当不再需要动态分配的内存空间时,使用运算符释放之前由 new 运算符分配的内存。

2023-09-03 17:42:10 501

空空如也

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

TA关注的人

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