c++
Begin to change
咸鱼也是会翻身的!
展开
-
二叉树知识点最详细最全讲解
1.树的介绍1.1树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 1.每个节点有零个或多个子节点; 2.没有父节点的节点称为根节点; 3.每一个非跟节点有且仅有一个父节点; ...原创 2021-04-05 23:12:53 · 29789 阅读 · 3 评论 -
用栈实现队列(Leetcode第232题)+用队列实现栈(Leetcode第225题)
1.题目描述2.思路思路是很清晰的,栈是先进后出,而队列是先进先出,所以要用栈实现队列,就必须用到两个栈,一个输入栈,一个输出栈在push数据的时候,只要数据放进输入栈就好,「但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入)」,再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。如果进栈和出栈都为空的话,说明模拟的队列为空了。3.代码展示class MyQueue {public: stack<int&g原创 2021-04-04 19:18:12 · 237 阅读 · 0 评论 -
最详细KMP算法
1.KMP介绍1.1什么是KMP之所以叫KMP是为了纪念发明者,分别为:Knuth,Morris和Pratt1.2KMP有什么用KMP主要是应用在字符串匹配上。KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前匹配的文本内容,可以利用这些信息避免从头再去做匹配。2.前缀表的介绍2.1什么是前缀表写KMP时用到的next数组就是前缀表。前缀表是用来回溯的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从那里重新开始匹配。2.2前缀表如何记录首先要知道原创 2021-04-03 21:52:56 · 874 阅读 · 0 评论 -
两数之和(Leetcode第1题)
有着Leetcode梦开始的地方也是结束称呼的第一题,我来了,这次是我第二次做这个题,第一次用的是JAVA,这次用的是C++的哈希表的做法,两次的方法是不一样的。1.题目描述2.分析此题有两种做法,一种是暴力解法,这里就不详细的讲了,也就是用两个个for循环,一个个的找代码展示:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) {原创 2021-03-30 20:38:15 · 364 阅读 · 0 评论 -
快乐数(Leetcode第202题)
1.题目描述2.分析此题可能会遇到三种情况:其实第三种情况可以排除,举个例子就知道了3.算法算法分为两部分,我们需要设计和编写代码。给一个数字 nn,它的下一个数字是什么?按照一系列的数字来判断我们是否进入了一个循环。第 1 部分我们按照题目的要求做数位分离,求平方和。第 2 部分可以使用哈希集合完成。每次生成链中的下一个数字时,我们都会检查它是否已经在哈希集合中。如果它不在哈希集合中,我们应该添加它。如果它在哈希集合中,这意味着我们处于一个循环中,因此应该原创 2021-03-30 17:30:16 · 159 阅读 · 0 评论 -
三数之和(Leetcode第15题)
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> result;//定义result为容器里的容器,相当于当容器里还有一个小容器,跟题目最后输出的是符合数组相吻合。 sort(nums.begin(), nums.end());//sort类,用于排序。 ...原创 2021-03-19 12:02:57 · 269 阅读 · 0 评论 -
指针常见的错误
#include<iostream>using namespace std;int main(){ int *p=new int; *p=3; cout<<"将3赋给p的地址后,指针p读取的值:\t"<<*p<<endl; delete p;//删除空间; p=0; cout<<"将删除空间后,指针p读取的值:\t.原创 2018-12-18 12:59:50 · 1177 阅读 · 0 评论 -
友元函数
#include<iostream>using namespace std;class Complex{ private: double real;//定义复数的实部; double imag;//定义复数的虚部; public: Complex();//声明构造函数; Complex(double r,double i);//声明函数的重载; ...原创 2018-12-11 12:46:31 · 193 阅读 · 1 评论 -
运算符重载
#include<iostream>using namespace std;class Complex{ private: double real;//定义复数的实部; double imag;//定义复数的虚部; public: Complex();//声明构造函数; Complex(double r,double i);//声明函数的重载; ...原创 2018-12-11 12:45:26 · 126 阅读 · 1 评论 -
重载运算符
#include<iostream>using namespace std;class Complex{ private: double real;//定义复数的实部; double imag;//定义复数的虚部; public: Complex();//声明构造函数; Complex(double r,double i);//声明函数的重载; ...原创 2018-12-11 12:42:48 · 106 阅读 · 0 评论 -
重载输入运算符
#include<iostream>using namespace std;class Complex{ private: double real; double imag; public: Complex(); Complex(double r,double i); Complex operator+(Complex &t1);//重载运算符+...原创 2018-12-11 12:41:53 · 275 阅读 · 0 评论 -
静态成员
#include<iostream>using namespace std;class Student{ private: int num; int age; float score; static float sum;//声明静态数据成员 static int count;//声明静态数据成员 public: Student(int n,int...原创 2018-12-11 12:40:10 · 133 阅读 · 0 评论 -
指针与堆
#include<iostream>using namespace std;int main(){ /*在堆中创建一个int型的内存,创建成功就会返回地址,可以用指针p保存, 这样p就指向的是 创建的内存区域,大小由new后面的类型决定;*/ int *p; new int(9); p=new int; //double *p=new double;//p指向的是...原创 2018-12-18 12:50:19 · 262 阅读 · 0 评论 -
访问堆中的数据成员
#include<iostream>using namespace std;class Human{ public: int get(){ int i=100; return 100; } private: int i;};int main(){ /*在堆中保存对象*/ Human*p=new Human;/*自动调用构造函...原创 2018-12-18 12:54:37 · 202 阅读 · 0 评论 -
指针对数值的改变
#include<iostream>using namespace std;int main(){ /*int num=10; int *point; point=&num; cout<<*point<<endl; cout<<&num<<endl; *point=20; cout<<po原创 2018-12-18 12:57:55 · 2169 阅读 · 0 评论 -
总结
#include<iostream>using namespace std;int main(){ int *p=new int;//p指向int的空间,该内存可以访问并且赋值; *p=3600; cout<<*p<<endl;//输出空间中保存的值; delete p;//删除空间,不删除指针,这个指针还指向原来的内存空间,如果在使用,可能...原创 2018-12-18 13:00:53 · 114 阅读 · 0 评论 -
用类求两点间的距离
设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果:A(x1,y1), B(x2,y2),Distance1=d1Distance2=d2其中:x1、y1、x2、y2为指定坐标值,d1和d2为两个坐标点之间的距...原创 2018-12-18 22:58:07 · 2405 阅读 · 0 评论 -
用类求总分和平均分
声明一个Student类,在该类中包括一个数据成员score(分数)、两个静态数据成员total_score(总分)和count(学生人数);还包括一个成员函数account()用于设置分数、累计学生的成绩之和、累计学生人数,一个静态成员函数sum()用于返回学生的成绩之和,另一个静态成员函数average()用于求全部成绩的平均值。在main函数中,输入某班同学的成绩,并调用上述函数求出全班同学...原创 2018-12-18 23:02:07 · 3612 阅读 · 0 评论 -
用类求半径
定义一个圆类(Circle),属性为半径(radius)和圆周长、面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和复制构造函数#include<iostream>using namespace std;class Circle{ private: int r; double c;...原创 2018-12-18 23:16:49 · 553 阅读 · 0 评论 -
用指针编写程序将输入的字符串倒序输出
#include<iostream>#include<string.h>using namespace std;int main(){ char a[20]; int i; char *p; p=a; cout<<"输入一个字符串"<<endl; cin>>a; i=strlen(a);//测量长度要调用strin...原创 2018-11-29 23:01:28 · 11628 阅读 · 0 评论 -
引用和指针的区别
#include<iostream>using namespace std;int main(){ int *p=new int;//定义一个指向int的指针p,该指针指向新建的一块内存; if(p!=NULL)//假如p不为0表示创建成功; { int &r=*p;//将r初始化为p指向的数据的别名; r=3;//通过r将3保存在空间中,r是局部...原创 2018-12-27 22:09:15 · 102 阅读 · 0 评论 -
采用成员函数和友元函数计算给定两个坐标点之间的距离
设计一个用来表示直角坐标系的Location类,在主程序中创建类Location的两个对象A和B,要求A的坐标点在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点之间的距离,要求按如下格式输出结果:A(x1,y1), B(x2,y2),Distance1=d1Distance2=d2其中:x1、y1、x2、y2为指定坐标值,d1和d2为两个坐标点之间的距...原创 2018-12-16 21:38:12 · 1818 阅读 · 0 评论 -
设计一个4*4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线的和,例如以下魔方,各行各列及两对角线值的和都是64.
求4*4的魔方的一般步骤如下:设置初始魔方的起始值和相邻元素之间的差值。例如上述魔方的初始魔方的起始值(first)和相邻元素之间的差值(step)分别为:first=1; step=2;设置初始魔方元素的值,例如上述魔方的初始魔方为:1 3 5 79 11 13 1517 19 21 2325 27 29 31生成最终魔方。方法如下:...原创 2018-12-16 21:28:07 · 4848 阅读 · 0 评论 -
对象初始化
#include<iostream>using namespace std;class Time{ /*private: int hour; int minute; int sec;*/ public: int num; int sex; int secore;};Time t={10,20,30};//定义Time对象t,并初始化对象中的数...原创 2018-12-04 21:58:19 · 144 阅读 · 0 评论 -
类的声明
#include<iostream>using namespace std;class Student//类名为Student,一般类名的第一个字母大写,用来和变量明区别 ;{ public: /*表示函数的访问权限为公有,既可以被类中成员函数调用,也可以被类作用域中的 其他函数调用 ,在类外可以被访问,还可以在类的定义中被赋值;*/ int num;//声明公有数据成...原创 2018-12-04 21:57:23 · 731 阅读 · 0 评论 -
输入两个长度相同的字符串,比较两个数在相同位置的字符是否相同
#include<iostream>#include<string.h>//因为要测字符串长度,所以要加头文件; using namespace std;int main(){ char a[10],b[10];//根据题意而设置字符串大小; int i,j=0,l=0; cout<<"输入第一个字符串"<<endl; cin&g...原创 2018-11-26 23:00:13 · 2746 阅读 · 0 评论 -
利用函数指针,编写一段简洁的代码,实现计算器的功能
#include<iostream>using namespace std;void function_addition();void function_subtraction();void function_multiplication();void function_division();int main(){ void (* point_function[4])...原创 2018-11-29 23:09:14 · 648 阅读 · 0 评论 -
编写一个程序求输入字符串的长度
#include<iostream>using namespace std;int main(){ char a[20]; int i,l=0;//要给定义的字符赋初值,不然初值可能不是0; cout<<"输入一个字符串"<<endl; cin>>a; for(i=0;a[i]!='\0';i++) { l++; } c...原创 2018-11-29 22:57:52 · 10505 阅读 · 0 评论 -
凯撒加密算法
#include<iostream>#include<cstring>/*文件cstring,和string.h对应,c++版本的头文件,包含比如strcpy之类的字符串处理函数*/#include<string>using namespace std;int main(){ cout<<"\n"; cout<<"---.原创 2018-11-12 21:21:30 · 1595 阅读 · 0 评论 -
编写一个程序,对一个整型数组的元素求和,结果使用全局变量sum存储,另外对数组元素中的奇数求和,结果使用局部变量sum存储,在主程序将两个结果输出。
#include<iostream>using namespace std;int sum_1(int a[]);//定义计算奇数的和; int main(){ int a[]={1,2,3,4,5,6,7,8,9,10};//定义数组并附初值; int i,sum=0,sum_2;//因为sum要进行运算,所以要进行赋初值,即为0,不然可能算错; for(i=0;...原创 2018-11-13 21:34:35 · 11860 阅读 · 1 评论 -
外部函数的调用
如计算下列排列函数先建立一个源文件如内部函数1:#include<iostream>using namespace std;int factorial(int n){ if(n < 0) { cout<<"n<0 , 错误!"<<endl; return 0; } else { int m = 1; whi...原创 2018-11-06 20:07:45 · 5170 阅读 · 0 评论 -
定义成员函数
#include<iostream>using namespace std;class Student{ private: int num; char name[20]; char sex; public: void display();};int main(){ cout<<"在类外面定义成员函数"<<endl; retu...原创 2018-12-04 21:59:04 · 1409 阅读 · 0 评论 -
通过对象引用访问成员
#include<iostream>using namespace std;class Time{ private: int hour; int minute; int sec; public: void set_time(Time &t); void show_time(Time &t);};int main(){ Time t...原创 2018-12-04 22:00:32 · 1163 阅读 · 0 评论 -
用友元函数重载乘法,用成员函数重载除法
#include<iostream>using namespace std;class Complex{ private: int real;//记录实部; int imag;//记录虚部; public: Complex(){}//构造函数并对其赋初值为0; Complex(int a,int b);//重载构造两int型函数; friend ...原创 2018-12-21 00:04:42 · 910 阅读 · 0 评论 -
友元函数重载+运算符
#include<iostream>//#include<vector>using namespace std;class Vector{ private: int a; int b; public: Vector(){}//定义无参构造函数并赋初值为0; Vector(int i,int j)//重载构造函数; { a=i; ...原创 2018-12-20 23:47:20 · 5261 阅读 · 0 评论 -
定义一个圆的类,输入半径,计算周长和面积并输出
#include<iostream>using namespace std;class Circle{ private: int r; double s; double c; public: void inputr();//输入半径的成员函数; void computec();//计算圆的周长; void computes();//计算圆的面积;...原创 2018-12-20 23:43:31 · 17201 阅读 · 0 评论 -
编写一个程序,找出数组中元素的最大值,要求用到成员函数。
#include<iostream>using namespace std;class Sum{ private: int a[10];//定义一个数组; int sum; public: void sr();//成员函数,用来输入数组的值; int bijiao();//将数组的元素进行比较; };void Sum::sr(){ sum=a[0...原创 2018-12-20 23:30:25 · 6353 阅读 · 0 评论 -
编写一个可以打印不同长度数组内容的函数模板
#include<iostream>using namespace std;#define N 5 template<typename T>T print(T a[],int size){ for(int i=0;i<size;i++) { cout<<a[i]<<ends; } cout<<endl;}...原创 2018-12-01 21:08:52 · 339 阅读 · 0 评论 -
定义一个函数模板,要求返回两个值中的较小值。
#include<iostream>using namespace std;template<typename T>//定义函数模板,T为类型参数; T cmin(T a,T b)//函数的返回类型和形参类型;{ T min=a;//保存最大的变量; if(a>b) { min=b; } return min;}int main(){...原创 2018-12-01 20:51:20 · 7482 阅读 · 0 评论 -
输入5门学科的成绩,编写程序求其平均分。要求用函数完成,科目存放在指针申请的动态空间中。
#include<iostream>using namespace std;double pj(double pa[]);//定义一个计算平均值的函数; int main(){ double *pa=new double[5];//分配五个内存空间; int i; double s,p; for(i=0;i<5;i++) { cin>>pa[...原创 2018-12-01 20:31:06 · 2705 阅读 · 0 评论