![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
faaarii
努力变优秀
展开
-
二叉树的前中后非递归遍历
非递归前序遍历:1> 首先建立一个二维指针,用来存储每个结点的地址,定义栈顶指针top,初始值为-1,并将根结点存入栈中,top++;2> 进入while循环,栈顶指针不为-1,则进入while循环,输出当前栈顶元素p的数据域,代表前序遍历的第一个结点为根结点;3> 如果当前的p结点拥有右子树,将这个右子树结点存入栈中,没有则不存;因为栈的特点是先进后出,所以先存右子树,在存左子树;...转载 2020-07-11 17:07:29 · 270 阅读 · 0 评论 -
c++实现简单的带参数grep命令
实现 grep 命令,grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。比如有以下文本: #test.txtababdnskahcpkkcnwdklanabdckksnsacdkjkaha.........执行- grep “abd” test.txt 则执行的结果就是打印输出前两行的内容: ababdnskahcpk kcnwdklanabdc从磁盘中读取文件,并能实现带参数的 grep 命令,grep -n -nNum,grep -n 是将原创 2020-07-10 13:08:00 · 1531 阅读 · 0 评论 -
数据结构之线性表小结
以下都是用自己的话来总结的,可能和专业术语有偏差(大鸟勿喷),留给自己复习使用啦一、数据结构:其实就是在你编写一个程序之前,你所用到的数据想用怎样方式存起来:固定长度的静态存储(顺序存储,一般用数组)、变长的动态存储(链式存储,一般用指针),除此之外,数据之间也会有一定的联系,方便互相找到彼此(逻辑结构,常用的有:集合,线性结构,树结构,图结构)用课本上的话来说就是:数据结构分为逻辑结构(...原创 2020-06-23 15:46:47 · 347 阅读 · 0 评论 -
字符串分类统计C++
题目描述输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。输入一行字符输出统计值样例输入aklsjflj123 sadf918u324 asdf91u32oasdf/.';123样例输出23 16 2 4使用库函数<ctype.h>int isalnum(int c)该函数检查传递的字符是否是字母数字。in...原创 2020-04-25 14:46:23 · 3073 阅读 · 0 评论 -
字符串排序
题目描述输入三个字符串,按由小到大的顺序输出输入3行字符串输出按照从小到大输出成3行样例输入cdeafgabc样例输出abcafgcde#include<iostream>#include<cstring>#include<cmath>#include<vector>#include...原创 2020-03-28 20:49:03 · 470 阅读 · 0 评论 -
基数排序(c++)
思想:不是比较也不是移动而是根据关键字两个要点:基;序列中数的最大位数,个位,十位,百位,,桶:0-9基本步骤:待排序列afor(每一位i){ for:遍历数组a,计算当前位数的值b,放到对应的桶里bucket[b]=a for:遍历桶,把桶里的数放回数组a中}时间复杂度O(n) 内排 稳定#include<iostre...原创 2020-03-28 16:26:51 · 303 阅读 · 0 评论 -
归并排序(c++)
将有序表两两归并成有序表归并算法左表右表,利用那个辅助表同时遍历左表右表,找出最小值#include<iostream>#include<cstring>#include<cmath>using namespace std;const int N=1001;int a[N];int n;void Merge(in...原创 2020-03-28 16:23:21 · 144 阅读 · 0 评论 -
选择--堆排序(c++)
大根堆---建立升序小根堆--建立降序堆排序:1,建立堆2,排序--将根节点与最后一个节点交换,然后将除了最后一个元素的剩余元素向下调整成大根堆,重复操作为什么这么做:可以确认第k大如果用小根堆建立升序,拿掉根节点最小元素一方面是他破坏了最小堆结构,其次不能确定第k小元素**建堆的时候,扫描调整len/2~1**自下而上调整时,找孩子中最大的时间复杂度O...原创 2020-03-28 16:19:42 · 109 阅读 · 0 评论 -
选择--简单排序(c++)
思想;找出最小值进行交换,i+1~n中找出最小值与i交换时间复杂度O(n2) 内排 不稳定#include<iostream>#include<cstring>#include<cmath>using namespace std;const int N=100001;int a[N];int n;void selectSor...原创 2020-03-28 16:06:58 · 110 阅读 · 0 评论 -
交换--快速排序算法(c++)
分支的思想,选第一个元素作为轴值将序列进行分解,通常我们将待排序列中的第一个元素为轴值,利用一个划分函数找到轴值的位置,划分函数是将小于轴值的数放在轴值的左边,大于轴值的数放在轴值的右边快排:找到轴值,轴值左边快排,轴值的右边进行快排#include<iostream>#include<cstring>#include<cmath>using...原创 2020-03-28 16:02:33 · 153 阅读 · 0 评论 -
交换--冒泡排序(c++)
思想:不停的比较交换冒泡:序列中消除所有的逆序对,有个flag来标记时候进行交换,如果没被标记--没有交换没有逆序对,已经达到有序时间复杂度O(n2) 内排 稳定#include<iostream>#include<cstring>#include<algorithm>#include<cmath>using name...原创 2020-03-28 15:54:39 · 109 阅读 · 0 评论 -
插入--希尔排序(C++)
思想:直接插入的基础上加上步长,在步长的范围内进行操作时间复杂度O(n2) 内排 不稳定#include<iostream>#include<cstring>#include<cmath>using namespace std;const int N=1001;int a[N];int n;int d,i,j;//d为步长,在...原创 2020-03-28 15:49:15 · 77 阅读 · 0 评论 -
插入--折半排序(c++)
思想:直接插入的基础上,再找插入位置的步骤上进行了优化,利用分治的思想,最终high+1是最终要插入的位置,先进行移动,然后插入时间复杂度O(n2) 内排 稳定#include<iostream>#include<cstring>#include<algorithm>#include<cmath>using namesp...原创 2020-03-28 15:46:22 · 219 阅读 · 0 评论 -
插入--直接插入算法(c++)
思想:比较,移动,插入假设待排序列中的第一个元素是有序的,剩余的无序序列挨个的插入有序的序列中,从无序的第一个元素开始,把这个数存到哨兵里,比较前面的数,比前面的数小,需要插入到这个数的前面,插到前面那个位置需要不停地和前面的数比较,大的数往后移动,最后找到位置插入时间复杂度O(n2) 内排 稳定#include<iostream>#include<cst...原创 2020-03-28 15:42:35 · 733 阅读 · 0 评论 -
Floyd(弗洛伊德)最短路径算法
输入输入的第一行包含1个正整数n,表示图中共有n个顶点。其中n不超过50。以后的n行中每行有n个用空格隔开的整数。对于第i行的第j个整数,如果大于0,则表示第i个顶点有指向第j个顶点的有向边,且权值为对应的整数值;如果这个整数为0,则表示没有i指向j的有向边。当i和j相等的时候,保证对应的整数为0。输出共有n行,每行有n个整数,表示源点至每一个顶点的最短路径长度。如果不存在从源点至...原创 2020-03-20 11:24:07 · 462 阅读 · 0 评论 -
最小生成树prim(c++)
输入输入的第一行包含一个正整数n,表示图中共有n个顶点。其中n不超过50。以后的n行中每行有n个用空格隔开的整数,对于第i行的第j个整数,如果不为0,则表示第i个顶点和第j个顶点有直接连接且代价为相应的值,0表示没有直接连接。当i和j相等的时候,保证对应的整数为0。输入保证邻接矩阵为对称矩阵,即输入的图一定是无向图,且保证图中只有一个连通分量。输出只有一个整数,即最小生成树的...原创 2020-03-18 19:36:30 · 612 阅读 · 0 评论 -
Dijkstra单元最短路径,最小堆优化,SPFA算法求单源最短(c++)
介绍原理的有很多,所以直接附上代码:输入输入的第一行包含2个正整数n和s,表示图中共有n个顶点,且源点为s。其中n不超过50,s小于n。以后的n行中每行有n个用空格隔开的整数。对于第i行的第j个整数,如果大于0,则表示第i个顶点有指向第j个顶点的有向边,且权值为对应的整数值;如果这个整数为0,则表示没有i指向j的有向边。当i和j相等的时候,保证对应的整数为0。输出只有一行,共...原创 2020-03-18 19:34:53 · 350 阅读 · 0 评论 -
递归分治--逆序/正序输出正数
题目描述:例如,对于数12345,依次输出5 4 3 2 1分析:如果n/10==0,则输出n;否则 输出n%10,然后,对n/10进行相同处理#include <iostream>#include <stdlib.h>#include <algorithm>#include <math.h>#include <stri...原创 2019-10-21 19:50:37 · 307 阅读 · 0 评论 -
默认参数不能重复定义(构造函数)
今天做练习的时候发现了一个很有意思的错误:class Box***Box(double l=0,double w=0,double h=0){length=l;width=w;height=h;}在类内定义没有错误但是这样:(在类外定义)Box::Box(double l=0,double w=0,double h=0){length=l;width=w;height=h;...原创 2018-06-19 10:57:05 · 1319 阅读 · 3 评论 -
文件读写(类对象数组写入文件):简单的学生成绩管理系统(6.17分析)
最近老师布置了一个作业,大概是这样的:将一个学生成绩管理写入文件,并进行写读修改操作。涉及到的问题有这么几个:成绩管理的类:1.创建对象数组,管理多个学生,学生的个数由用户定义,即随机的解决:可以有一个函数来管理,询问用户,动态创建对象数组(问题:(1)学生类中有个排名,因为学生的个数是未知的,如果用简单选择法来进行排序就不能实现,暂时定义有限个对象数组;(2)还有就是排序...原创 2018-06-19 22:15:18 · 2018 阅读 · 0 评论 -
类的包含 简单程序细节总结
这是一个简单的类的包含的数据初始化#include<iostream>using namespace std;class A{public: A(int x):a(x){}//用了初始化列表的形式,注意书写格式 int a;//数据定义成了公有(1)};class B{public: B(int x,int y):aa(x){b=y;}//用初始化列表初始化A的...原创 2018-06-19 23:08:16 · 245 阅读 · 0 评论 -
输出运算符重载
cannot access protected member declared in class 'Cricle'我遇到这种错误是在这种情况下:class Cricle****friend ostream & operator<<(ostream &,const Cricle );ostream &operator<<(ostrea...原创 2018-06-22 00:05:45 · 742 阅读 · 0 评论 -
error C2548: missing default parameter for parameter 3
我遇到这种错误是在这种情况下:在构造函数中部分有默认值像是这样: Employee(char*pn="\0",int num=0, double bs);出错原因是因为在做默认参数的时候,必须是按从右到左的顺序,也就是说先给bs一个默认值,然后依次向左。...原创 2018-06-22 23:40:46 · 1758 阅读 · 0 评论 -
运算符重载C++总结
总结了一下课本上会出到的运算符重载主要用于空间三维坐标的运算,复数的运算,向量的运算,集合的运算,有理数的运算。他们的特点是有多个部分数据组成,在进行加减乘除基本运算的时候应该对应计算,但是每一运算符重载的书写都有一定的格式记住一些完美的格式有利于程序的运行。以复数计算为例加法运算 friend Complex operator+(const Complex&c1, c...原创 2018-06-29 18:26:17 · 193 阅读 · 0 评论 -
简单的图书管理类(类的基础应用)
/*定义一个book类实现对图书的简单显示,借阅和归还管理*/类的基础知识应用/*定义一个book类实现对图书的简单显示,借阅和归还管理*/#include<iostream>#include<cstring>using namespace std;class Book{ char book[20]; double price; int number;...原创 2018-06-30 23:09:21 · 655 阅读 · 0 评论 -
计算员工的工资(虚函数)
虚函数和多态性的简单应用,计算员工的工资#include<iostream>#include<cstring>using namespace std;class Employee{protected: char name[20]; int number; double basicSalary;public: Employee(char*pn="\0"...原创 2018-06-30 23:38:35 · 1188 阅读 · 0 评论 -
点 圆 圆柱的继承实现
我觉得值得注意的是他用了输入输出的运算符重载:#include<iostream>using namespace std;class Point{protected: double x,y;public: Point(double x=0,double y=0); void setPoint(double x,double y); double getx(){r...原创 2018-06-30 23:43:55 · 744 阅读 · 0 评论 -
对象数组·简单的学生管理
/*简单的学生类,输入某班的成绩计算总分和平均值*//*简单的学生类,输入某班的成绩计算总分和平均值*/#include<iostream>using namespace std;class Student{ double score; static double total; static double count;public: void scoretota...原创 2018-06-30 23:49:57 · 415 阅读 · 0 评论 -
PTA--最大子列和问题
01-复杂度1最大子列和问题(20分)给定K个整数组成的序列{N1,N2, ...,NK},“连续子列”被定义为{Ni,Ni+1, ...,Nj},其中1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和...原创 2019-03-23 22:03:42 · 465 阅读 · 0 评论 -
约瑟夫环问题(c++)
约瑟夫环问题总时间限制:1000ms内存限制:1000kB描述约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。输入8 1 3 (n=8 k=1 m=3 )输出7 (剩下的...原创 2019-03-31 19:17:18 · 2218 阅读 · 0 评论 -
简单的学校人员名册管理
题目大概是这样的:编辑一个人员管理类并对其测试人员信息有姓名 ,生日,ID,家庭住址,性别成员函数有构造函数,复制构造函数,输入输出;主函数对所有成员函数进行测试。但是在编译的时候遇到了一些小细节上的错误下面总结一下经验:staff有个数据是生日date.birth,这个如果需要把他定义成struct结构体作为类的成员的话,结构体的对象是没有参数列表的,所以在构造函数初始化的时...原创 2018-06-29 10:10:14 · 336 阅读 · 0 评论