![](https://img-blog.csdnimg.cn/20201227165200555.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++从入门到上炕
文章平均质量分 55
C语言学习笔记
辛伯达岛
B站id:哈哈哈哈栋
展开
-
【C++语法难点】 深拷贝和浅拷贝是什么,拷贝构造,拷贝赋值
深入说明深拷贝和浅拷贝,C++类和对象入坑必学!!!原创 2022-11-19 10:54:01 · 721 阅读 · 0 评论 -
C++引用知识点超级清楚的总结
希望入门的C++的小伙伴,能通过这篇文章,更好理解引用知识点。原创 2022-11-12 16:51:36 · 1005 阅读 · 0 评论 -
STL链表容器:自制list(链表)容器
自制STL链表容器。原创 2022-11-06 19:26:38 · 792 阅读 · 0 评论 -
c++范围for循环
c++范围for循环原创 2022-10-29 10:13:47 · 251 阅读 · 0 评论 -
c++向一个vector中连续写入与输出数据
向vector中连续写入,读出数据原创 2022-10-29 09:49:35 · 1188 阅读 · 0 评论 -
STL库-类模板知识点总结
类模板库知识点总结。原创 2022-10-26 18:33:08 · 378 阅读 · 0 评论 -
STL库-函数模板知识总结
c++函数模板知识点总结,关于函数模板,要的都在这里。原创 2022-10-25 11:47:12 · 419 阅读 · 0 评论 -
c/c++指针:指针函数和函数指针
c/c++指针系列之【指针与函数】,详细说明了两部分内容:返回值是指针的函数,函数指针。原创 2022-10-23 12:41:06 · 609 阅读 · 0 评论 -
const和指针
指针与const关键字;指向常量的指针;常量指针;这篇短文介绍清楚了!!!!原创 2022-10-14 13:39:36 · 270 阅读 · 0 评论 -
二叉树6:二叉树的层序遍历
1.先看下面这张图层序遍历怎么工作的呢?从左到右,丛上到下,依次遍历。就和我们平时阅读的顺序是一样的。第一行看完了,看第二行。所以很明显,下面这个树的层序遍历序列是:1,2,3,4,5,6,7,8,92.数据结构实现的逻辑我们需要一个队列,具体流程如下图:3.c++完整代码(超级详细的注释)#include <vector>#include <queue>using namespace std;class Solution{public:原创 2021-11-17 17:55:13 · 892 阅读 · 0 评论 -
二叉树2:迭代(栈)实现二叉树的先序遍历
二叉树1:递归实现二叉树的先序、中序、后序遍历中给出了用递归的方式实现二叉树遍历的流程,这个文章总结一下【用迭代的方法实现二叉树的先序遍历】。迭代的关键就是用栈这里先模拟一下如何使用栈来遍历这个二叉树。我们需要一个栈:st。一个列表:vec。列表用来保存最后遍历的结果,也就是最终先序遍历的顺序。先序遍历的是中左右,总体思路是这样的:step1:访问到的这个结点,先进栈;step2:立马将其值放入vec列表中(按顺序),并让这个结点出栈;step4:接着 先 访问其右子树(不为空的话原创 2021-11-14 16:30:33 · 2234 阅读 · 0 评论 -
二叉树1:递归实现二叉树的先序、中序、后序遍历
先序,中序,后序遍历有什么区别?1.序是什么?(一)、我们知道,二叉树每个结点最多有两个孩子,一个左孩子一个又孩子。访问的时候,这个序就指的是:父节点,左孩子,右孩子。他们三个的访问顺序。(二)、再一个,访问左右子树的相对顺序是固定的,即无论先序,中序还是后序,对于左右子树都是 先访问左子树,再访问右子树。不存在先访问右再访问左这一说。(三)、有了(二)的约束以后,那其实先序、中序、后序的访问顺序就很明显了,其实就是父节点相对于左右子树或左右孩子的访问顺序先序遍历:访问中间结点,再访问左原创 2021-11-13 16:53:45 · 1944 阅读 · 0 评论 -
哈希表1:有效的字母异位词 (详细解析)
题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。**注意:**若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。题目链接:有效的字母异位词解决思路找一个数组record长度为26,因为一共就26个字母嘛。首先,扫描字符串s。如果扫描到字母a,就让record[0]++。代表a出现一次。就像咱们选班长投票写正字一样。出现几次,就给那个字母记上几次。然后,扫描字符串t。这个时候,就相当于是,如果选班长的时候,原创 2021-11-08 15:58:43 · 313 阅读 · 0 评论 -
栈和队列6:滑动窗口最大值
入队push()的原则若push的数值大于入口(队尾)的元素值,那么就直接将队列后端(队尾)的数值弹出。如果一直大于,就一直弹对尾元素;直到要push的数值比对尾元素的值小。(一个是最大的,一个是次大的)出队pop()的原则每次弹出的时候,检查当前窗口要移除的元素value **(就是窗口最左边的元素)**和队列出口(队头)元素的大小,若两者相等(要弹出的元素和队头元素)那么,弹出。语言描述令人头昏脑涨,还是举个例子模拟一下吧。模拟完了再来看上面的描述。模拟:数组:num原创 2021-11-08 14:23:28 · 84 阅读 · 0 评论 -
栈和队列5:逆波兰表达式求值(c++代码实现)
什么是逆波兰表达式?波兰表达式就是一种后缀表达式后缀就是运算符卸载后面。我们生活中常见的是中缀表达式:比如:1+2这里 + 写在1和2之间。后缀表达式呢,会这样写:1 2 +为什么用后缀表达式(也就是逆波兰表达式?)原因很简单,逆波兰表达式是给计算机看的,逆波兰表达式更方便计算机理解。中缀表达式1+2这种的,更方便人理解,但是计算机不好理解。为啥计算机好理解逆波兰表达式,不好理解中缀表达式呢?首先我们看看逆波兰表达式是怎么工作的。比如现在有这么一个中缀式(1+2)*3-原创 2021-11-07 08:57:38 · 833 阅读 · 0 评论 -
栈和队列4:删除字符串中相邻的相同元素
思路思路很类似下面这个问题:栈和队列5:用栈检测括号是否匹配删除字符串更简单一些,很像我们玩的“消消乐”。具体思路在代码注释,也可以结合上面的括号检测一起理解。#include <iostream>#include <stack>#include <algorithm>using namespace std;class Solution {public: string removeDuplicates(string s) {原创 2021-11-06 15:27:36 · 305 阅读 · 0 评论 -
栈和队列3:用栈检测括号是否匹配
比如有"({{()}})"这样一个字符串,我们现在要判断它括号是否能正常匹配。入栈顺序为’(’,’{’,’{’,’(’。我们实际入栈的时候,会遵循这样的原则:如果检测到时’(‘就让’)‘入栈,如果是’{‘就让’}‘入栈,如果是’[‘就让’]'入栈为什么这样做呢?为什么不检测到 ‘(’ 就让 ‘(’ 入栈呢?比如: 现在扫描到了第二个 ’(' 了,那么下一个就应该扫描 ’)' 了。若入栈的是 ’)' 就可以直接判断二者是否相等。看见栈里面的’)‘其实就是看见了’(’。若相等就直接Pop就就行了原创 2021-11-06 11:00:56 · 422 阅读 · 0 评论 -
栈和队列2:用队列实现栈
使用一个队列来模拟栈,难点在pop()函数。栈要首先弹出最后进入的元素。所以,我们可以把队列对尾元素前面的元素,依次重新入队。这个时候,原来的对尾就成了队头了。在使用pop(),这时候弹出的就是最后插入的元素,即栈顶元素了。#include <queue>#include <iostream>using namespace std;class MyStack {public: MyStack() { } //新建一个队列,用这个队列来实原创 2021-11-05 14:07:50 · 76 阅读 · 0 评论 -
栈和队列1:用栈模拟队列
解题思路核心就是要建立两个栈,一个输入栈一个输出栈。输入的时候:先让数据进入输入栈,这时候栈顶元素就是最后进入栈的元素。输出的时候:先让输入栈的元素push( )到输出栈。这时候:输入栈的栈顶就成了输出栈的栈底;输入栈的栈底就成了输出栈的栈顶。刚好输入栈的栈底就是第一个输入的元素,此时,他在输出队列中是栈顶。所以也会第一个输出他。这样就达到了:先入先出。队列的作用了。#include <iostream>#include <stack>using nam原创 2021-11-05 11:31:36 · 107 阅读 · 0 评论 -
链表练习题c++代码实现(四):经典问题,链表翻转
问题: 就地逆置链表[空间复杂度为O(1)]思路:其实很简单,只要把链表中的->全都变成<-就行了然后再给最后一个结点整个表头就搞定了。问题是怎么把->变成<-直接上代码typedef struct ListNode { int data;//数据域 ListNode *next;//指针域}ListNode, *LinkList;注意ListNode和*LinkList的区别ListNode a;//代表顶一个一个ListNode数据类型的变量,名字叫a原创 2021-11-04 12:05:48 · 487 阅读 · 0 评论 -
链表练习题c++代码实现(三):删除链表的倒数第n个结点
原创 2021-11-04 11:39:48 · 624 阅读 · 0 评论 -
链表练习题c++代码实现(二):寻找两条单链表的公共结点
寻找条链表的公共结点若两条链表有公共结点,则这两条链表和公共结点的样子应该是Y形状的两条链表可能不等长,所以长链表要先进行遍历,等遍历到剩余结点和短链表一样时再共同往后走,进行比较本代码所建立的链表都是带头结点的,采用面向对象实现lscc.h文件对方法的声明在这个文件里,具体实现在lscc.cpp文件后文有/* *文件名:lscc.h *作 者:辛伯达 *描 述:寻找两条单链表的公共结点 * */#ifndef LSCC_H#define LSCC_H#include原创 2021-11-02 15:59:01 · 551 阅读 · 0 评论 -
链表练习题c++代码实现(一):头插法,尾插法,删除指定结点
lscc.h文件头插法和尾插法都代码实现都有。采用面向对象的方法实现,第一个文件是.h文件,是对方法的初步定义,具体实现在lscc.cpp文件里(往下滑就能看见啦)。/* *文件名:lscc.h *作 者:辛伯达 *描 述:链表的基本操作和4个习题 */#ifndef LSCC_H#define LSCC_H#include <iostream>using namespace std;//定义链表中的数据结点typedef struct ListNode{原创 2021-10-31 21:20:43 · 623 阅读 · 1 评论 -
Codeblocks代码调试(debug)流程(C++四)
一、调试前的检查1.检查工程路径中没有中文或者别的特殊字符**2.检查调试器二、开始调试1.设置断点2.打开监视窗口3.开始调试(完)原创 2021-01-13 21:28:11 · 1218 阅读 · 0 评论 -
C++中的if和if...else..条件结结构(C++三)
三、表达式和条件结构表达式:符号与操作数的组合1.赋值运算符单等号 =计算顺序:从右往左i += 1➡️ i = i + 1i *= 1➡️ i = i * 12.关系运算符>、<、==>=、<=、!=int main(){ cout << boolalpha;//输出的时候True不会输出1而会输出True cout << "15 > 35吗?" << (15 > 35) <<原创 2021-01-11 15:54:54 · 955 阅读 · 2 评论 -
C++中的变量(C++二)
二、变量、数据类型及运算符变量:就是一个数据所占的内存空间1.变量命名**为什么要变量命名:**通过变量命名可以简单快速找到内存中存储的数据(在一定范围内)如何避免重名: 在C++中使用namespace命名空间技术命名规则:开头只能是字母或者下划线(不能以数字开头哦))只能由 _、字母、数字 这三个元素组成不能是关键字(保留字)2.数据类型数值整型int(32bit)short(16bit)long和 l ong long浮点型floatdouble原创 2021-01-11 15:49:51 · 375 阅读 · 0 评论 -
第一次遇见C++,C++程序结构解析(C++一)
1.c++代码框架解析#include <iostream> using namespace std;int main(){ cout << "Hello world!" << endl; //把一个字符串插入到了输出流中 return 0;}iostream:包含了关于输入输出语句的函数input==(i)==:输入output==(o)==:输出关于头文件的引入:可以用原来c语言的语法:#include <s原创 2021-01-11 15:43:18 · 167 阅读 · 0 评论