链表怎么排序
链表怎么排序方式一:只交换结点的数据域,不更改指针域 这样就可以采用各种排序方式了,冒泡、选择等,根据链表的特性进行一定的更改就可以 方式二:将链表放到顺序表,对顺序表排序,将顺序表每个结点的数据域依次赋值给链表的每个结点的数据域 也是不用更改指针域 参考来源
Linux_与Shell的关系
一个完整的计算机,整体结构如下图: ①我们的计算机由硬件组成,包括CPU、内存、主板、磁盘、各种外设等等。当这台计算机没有安装任何软件,只是一个硬件的集合体时,也叫做 裸机(纯硬件)。 ②操作系统是系统软件,操作系统的内核控制着和管理计算机上的所有硬件和软件,从而进行任务调度、资源分配等。操作系统起到承上启下的作用。 ③我们平时使用的应用软件(或叫应用程序),如QQ音乐、英雄联盟等,是基于操作系统开发的,可以理解为在操作系统的上层。这些程序的开发往往调用了操作系统提供的接口,离开了操作系统是无法独立运行的。 Shell是一个特殊的应用程序,介于操作系统内核和用户之间,是一个“命令解释器”,负责接受用户输入的指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果返回给用户。 在linux早期是没有图形化界面的,与系统进行交互的唯一方式就是通过shell提供的命令行界面(command-line interface, CLI)。同样在工作中,需要通过本机登录内网开发机,使用命令行界面进行开发,从而保障安全性。 命令行界面只接受文本输入。我们想使用shell进行开发,则需要深入了 ...
Linux_快捷键&热键
1. 光标移动123456789101112ctrl + < # 移动到前一个单词开头ctrl + > # 移动到后一个单词结尾ctrl + A # 移动到开头ctrl + E # 移动到结尾alt + B # 向左移动一个单词alt + F # 向右移动一个单词ctrl + B # 向左移动一个字符ctrl + F # 向右移动一个字符esc + B # 向左移动一个单词esc + F # 向右移动一个单词ctrl + XX # 在上次光和当前光标所在字符间跳转esc + T # 交换光标位置前的两个单词 2. 拷贝/剪切/粘贴/删除12345678* ctrl/shift + Insert # whindows下复制粘贴文本 * cmd + c/v # macOS下复制粘贴文本 ctrl + K # 剪切光标后所有字符 ctrl + U # 剪切光标前所有字符 ctrl + Y ...
从CLion和VsCode的小发现到C++的编译
一场编译环境的配置让我简单思考了一下VsCode和CLion的一个小区别 CLion、VS2022一个界面只能容纳一个项目 因此一个界面只能打开一个项目 好像是因为这两种编译器对每个项目都配置对应的环境(我猜的,因为每个项目里面有独立的配置文件 VsCode一个界面可以容纳多个项目,在”工作区”中通过不同的文件夹区分不同的项目 因此一个界面可以打开多个项目 VsCode一个环境配置文件可以配置整个工作区中的所有文件的环境(只要工作区一级目录包含一个配置文件文件夹,工作区的所有项目都用这个文件夹,而且配置文件夹可以添加编译环境,因为一个工作区既可以编译C、C++,也可以编辑Python等,只需要下载相应的插件并将配置添加到配置文件夹就可以 任何程序,一个项目里面只能存在一个main函数 《C++ Primer Plus 第六版》1.4中写,Windows编译器如果要编译程序,要为程序创建一个项目才行,并将组成程序的文件添加到该项目中。项目中有编译器提供的IDE(集成开发环境) CLion、VS2022是名副其实的“编译器” VsCode其实算是一个“编 ...
C++_new对象加括号和不加括号的区别
https://blog.csdn.net/a2796749/article/details/46908035 总结起来就是:如果在使用new在堆上开辟某一类型的空间的时候 如果是非自定义类型(int等),后面加括号的话,就以为了进行初始化,如果括号内有参数,就初始化为参数,如果没有参数(就是只有括号,什么都没有),就初始化为0 如果是自定义类型(类、结构体),后面加了括号的话,说明调用构造函数(也是初始化) 首先回顾一下关于构造函数的知识: 构造函数是用来在对象创建的时候对对象进行初始化的 用户可以自定义构造函数 构造函数分为带参数的构造函数和不带参数的构造函数 带参数的构造函数使得每次创建对象的时候可以根据不同的参数对于对象进行不同的初始化 而众所周知,带参数的函数可以进行重载(函数可重名,通过参数的个数和类型进行区分,根据参数个数和类型调用对应的同名函数)所以一个类中可以有多个构造函数(构造函数都是重名的,没有类型,名称跟类名一样);也可以构造参数缺省的函数(默认参数的构造函数) 一个类中可以有多个构造函数,其中不需要输入参数的函数称为默认构造函数 == ...
C++_delete和free
C++中堆区开辟和释放动态内存多用 new 和delete 1234int *x=new int(3);int *y=new int[10];delete x;delete []y; C中多用 malloc 和 free 1234int *x=(int *)malloc(sizeof(int));int *y=(int *)malloc(sizeof(int)*10);free(x);free(y); 以上两段代码,除了new的时候可以进行初始化之外,作用都是一样的
链表OJ特别篇
数据结构_链表OJ特别篇——环形链表 前言:此类笔记仅用于个人复习,内容主要在于记录和体现个人理解,详细还请结合bite课件、录播、板书和代码。 [toc] 环形链表有一个非常重要的特点,那就是一旦开始遍历,就无法停止,一直循环,会超出时间限制 常见的几种形式(圆圈内为存储的数据值) 解决这个题的一个比较常规的思路 题目地址 设置一快一慢两个指针,快的指针每次走2步,慢的每次走1步 在慢的指针走到环的时候,快的指针早就到了环里了,因此可以看作快的指针跑到了慢的后面(类似于套圈吧 而且快的指针与慢的指针有差距,由于快的指针每次2步,慢的1步,因此差距在以每次为1的速度削减,直到最后减到0 此时指针相交 既然快的指针和慢的指针能相交,就说明了有环,否则快的指针一定先指向NULL,且两者一定不会相遇 <img src="https://map--depot.oss-cn-hangzhou.aliyuncs.com/image/QQ%E6%88%AA%E5%9B%BE20220730201835.png" alt="QQ截图2022073020 ...
调试真的真的十分重要且好用!!!
记录一下,今天是2022/10/4 有一个问题,我找了半天,结果调试了一下就发现在哪儿出毛病了。。。。
C++_函数中的数字作为参数时
==一般来说==,函数中的参数为数字的时候,有三种情况: 只是作为形参,比如尾插一个数字”1“ 作为”第几个“,比如一个字符串删除函数DelStr(s1,1,2)中的1,是删除第一个元素(注意,这里并不是权重,1并不是权重是1(这样的话就是指s2的第二个元素了),而是就是单纯地指第1个,一般在函数中都是单纯地指第几个而不是权重是几 作为处理元素的个数,比如一个字符串删除函数DelStr(s1,2,3) 中的3,是指删除三个元素
在模版类里使用自己时可以省略模版参数
在模版类里使用自己(以及自己类型的指针、引用)可以省略模版参数不写 比如这个left 和 right 都是Node类型的指针 一般情况下,在使用模版类的时候,一定要写上模版参数,就像left的声明 但是如果是在本类调用自己,可以省略,像right的声明 因为在实例化的时候知道自己的模版参数具体是什么了,都是自己内部的,不用声明
C++_异常处理
异常处理 前言:此类笔记仅用于个人复习,内容主要在于记录和体现个人理解 [toc] 什么是异常处理 在程序中可能会出现各种各样的异常,比如出现了错误,常见错误主要分为语法错误和编译错误,有的错误编译器是可以检查出来的,有的错误编译器检查不出来,;又比如违背正常情况,比如要求输入小写字母,但是实际输入大写的或者数字等,这种错误编译器一般不会检查出来。 在设计程序之前,应当分析各种可能出现的异常情况,并设定相应的识别、处理方式,这就是异常处理的任务 比如如果某个数除以0,这就是一个异常,要根据除数为0的这种异常情况进行一个判断和处理(比如报错并结束程序) 当然,也可以通过断言等方式来处理一些错误,当assert中的判别式结果为false的时候,就直接异常退出程序 C++中如何实现异常处理C++的异常处理机制是由三个部分组成的:检查(try)、抛出(throw)、捕捉(catch) “异常情况“是设计者人为认定判定的:如果想要检查一段代码,在这个代码段里面出现了我们不想要的异常情况,就需要抛出”这是一个异常情况“的信号,然后由相应的捕捉代码进行捕捉,一旦捕捉到抛出的异常,就会进入到用来处 ...
C++_cin&cout
C++_cin、cout怎么写cout是输出流,变量a进入(输入)到输出流才能输出到屏幕,就是cout<<a cin是输入流,让键盘上输入流进入(输入)到变量a才能给a赋上值,也就是cin>>a 另外,比如这个sstringstream类,是用来将string类转化成别的数据类型 12345678int stringToInt(string s) //将操作数字符串转变成int{ stringstream ss; int i; ss << s; ss >> i; return i;} 要将这个string类s输入入到stringstream类ss中,然后将转化结果从ss输入到i中
C++_vs2022DeBug Error
这是由于从堆中释放空间内存之后,没有申请开辟,却又对那块空间执行了操作(包括再次释放