![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Love coldplay
正在努力学习数据结构与算法!
展开
-
C++笔记 this指针用法
一、this指针引言:首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。定义:在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。注意事项:1、this指针并不是对象的一部分,this指针所占的内.原创 2022-04-05 22:54:38 · 1307 阅读 · 0 评论 -
C++ 笔记 加号运算符重载
上面代码在Person p3 = p1+ p2的时候就会报错,但是我们就是想实现这样加号的功能,p3中m_A和m_B的值是p1和p2下m_A和m_B相加的结果。这种需求就需要使用C++中的加号运算符重载方式实现,在C++中,要实现加号运算符重载,有两个方法。第一种就是在类内部写成员函数实现,第二种全局函数实现,两个方法都有一个功能的函数名称operator+(), 这个函数名称是固定,不能写其他,不然编译器就不知道我们在实现加号运算符的重载。下面我们先来看看第一种方法,类的成员函数实现op...原创 2022-04-04 22:16:07 · 3305 阅读 · 0 评论 -
C++笔记 STL vector容器 详解及基本用法
1、vector是可变长的动态数组1、Vector是可变长的动态数组,支持随机访问迭代器,所有STL算法都能对vector进行操作。使用时需包含头文件vector。2、vector与普通数组区别2、 vector 数据结构和数组非常相似,也被称之为单端数组// vector与普通数组区别//1、不同之处在于数组是静态空间,而 vector 可以动态扩展// 动态扩展:// 并不是在原来空间之后 继续接新空间 // 而是寻找更大的内存空间,然后将原数据拷贝...原创 2022-03-28 10:31:58 · 929 阅读 · 0 评论 -
C语言 数据结构 之 链式栈
栈的链式存储结构简称为 链式栈链式栈是通过单链表来实现的。每次入栈一个元素,向链表中添加一个节点(相当于头插法),出栈一个元素,释放一个节点。链式栈是通过单链表来实现的。每次入栈一个元素,向链表中添加一个节点,出栈一个元素,释放一个节点。因为栈具有“后进先出”的特点,如果每次在链表的尾部进行插入和删除,就要遍历整个链表来找到尾节点。而在头部进行插入和删除时,只需根据头指针即可找到链表的首元素结点。而无需遍历链表。所以链式栈的出,入栈通过对链表进行头删和头插来实现。1. 链式栈的结点结构原创 2022-03-27 11:27:38 · 4227 阅读 · 0 评论 -
C语言对链表的基本操作(1、创建表 2、创建节点 3、表头插入 4、表尾插入 5、打印表)
1. 链表的结构体定义(结点定义)链表的一个结点首先肯定包含一个数据域和一个指针域,数据域用来存放结点数据,指针域存放的是指向下一个结点的地址。当然,头节点例外,其实,头结点和普通结点一样,只不过头结点只存放了指向下一个结点的地址(即首结点)。2、创建节点 为插入做准备,学习数据的时候,一定要把功能划分明确3、表头插入// 插在头结点之后 插队插入,不能越过头结点// 插队插入,不能越过头结点只需要强调一点,头插法是在头结点尾部,尾插法是在链表尾部插入,这个不要理解错了。其...原创 2022-03-25 16:44:10 · 3721 阅读 · 0 评论 -
二叉树的遍历
树的遍历是树的一种重要的运算。所谓遍历是指对树中所有结点的信息的访问,即依次对树中每个结点访问一次且仅访问一次,我们把这种对所有节点的访问称为遍历(traversal)。那么树的两种重要的遍历模式是深度优先遍历和广度优先遍历,深度优先一般用递归,广度优先一般用队列。一般情况下能用递归实现的算法大部分也能用堆栈来实现。深度优先遍历对于一颗二叉树,深度优先搜索(Depth First Search)是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。那么深度遍历有重要的三种方法。这三种方式常被用于访问树原创 2022-03-24 22:18:30 · 1351 阅读 · 0 评论 -
使用 list容器 排序:按照年龄进行升序,如果年龄相同,按照身高进行降序 C++
// 排序案例// 案例描述:将 Person 自定义数据类型进行排序,Person中属性有姓名,年龄和身高// 排序规则:按照年龄进行升序,如果年龄相同,按照身高进行降序首先了解下sort的用法1.默认情况下根据字符编码进行排序2.sort排序允许接受一个参数(函数),这个函数接受2个形参a,b,并且通过冒泡的方式比较。3.数组在原数组上进行排序,不生成副本。返回值规则:若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。若...原创 2022-03-23 20:51:31 · 1011 阅读 · 0 评论 -
C++笔记 10个评委打分,去掉一个最低分和一个最高分,输出平均分 采用C++实现,评委打分采用随机数。生成60-100的随机整数
采用C++实现,评委打分采用随机数。生成60-100的随机整数。有五名选手 选手 A B C D E ,去掉一个最高分,去掉一个最低分,取平均分。10个评委分别对每一名选手进行打分,原创 2022-03-18 09:56:40 · 7401 阅读 · 0 评论 -
学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号
由于需要处理的学生信息日趋加大,为提高学生管理的管理水平,优化资源,尽可能降低管理成本成为学生管理的新课题,学生管理系统是从学生管理现状出发,根据学生管理的新要求进行开发设计的,它解决了学生管理数据信息量大,修改不方便,对一系列数据进行分析时花费时间长等问题,帮助学生管理人员有效管理学生信息,成为管理高校中必不可少的管理工具。功能学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、专业、性别、年龄、电话、家庭住址。3、查找功能完成按学号或姓名查找学生的相关记录,并显示。...原创 2021-12-12 16:13:55 · 1948 阅读 · 0 评论 -
C语言 数据结构 数组栈 数组
来实现栈这种数据结构。当然,栈也可以通过其他方式来实现。因为该栈是通过动态数组实现的,所以称之为。程序演示 将0-9分别入栈再出栈。,所以我使用第一节实现的。原创 2021-12-07 19:20:07 · 1028 阅读 · 0 评论 -
动态链表的增删查改 学习C语言
大家好~在学习C语言的过程中,动态链表的相关操作总是会把我弄得有点晕。思路是有的,但是写完代码之后就很容易被自己绕晕。于是今天想把我在链表的创建、输出、插入删除的过程中出现的问题总结一下,理清一下自己的思路,防止以后再犯同样的错。链表是线性表的一种,所谓的线性表包含顺序线性表和链表,顺序线性表是用数组实现的,在内存中有顺序排列,通过改变数组大小实现。而链表不是用顺序实现的,用指针实现,在内存中不连续。意思就是说,链表就是将一系列不连续的内存联系起来,将那种碎片内存进行合理的利用,解决空间的问题。原创 2021-12-05 12:53:37 · 1294 阅读 · 1 评论 -
迭代法 C语言实现阶乘程序
递归//尽量用迭代法替代递归1.迭代与递归的区别迭代在循环条件为假时终止循环,递归在遇到基线情况是终止递归。2.先找到最简的问题,当函数递归调用到最简形式即满足基线情况时,递归调用结束,然后逐级将函数返回值返回给上一级调用者迭代法,无法使用公式一次求解,而需要用到迭代法下面用 C语言 用for循环设计一个计算1!~n!的阶乘程序 n<=16//下面用 C语言 用for循环设计一个计算1!~n!的阶乘程序 n<=16#include<stdio.h>#.原创 2021-11-30 10:49:27 · 1366 阅读 · 0 评论 -
拦截导弹 贪心算法问题(数据结构 C语言)
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系统还在试用阶段。所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度不大于30000的正整数)。计算这套系统最多能拦截多少导弹。输入:N颗依次飞来的导弹高度,(导弹个数大于1000)。输出:一套系统最多拦截的导弹数,并依次打印输出被拦截导弹的高度。该问题可近似等效为求原创 2021-11-29 17:05:18 · 1323 阅读 · 0 评论