面向对象C++
文章平均质量分 68
叫我豆黄
向善
展开
-
【C++】单链表的增删查改实现
//main函数的实现#define _CRT_SECURE_NO_WARNINGS 1#include"test.h"int main(){ //TestLinkList1(); //TestLinkList2(); //TestLinkList3(); TestLinkList4(); system("pause"); return 0;}原创 2017-09-17 21:23:26 · 748 阅读 · 0 评论 -
链表の如何判断一个链表带环以及找到环的入口
对于链表的题目真的是超级多,想要每道题都弄懂其实不难,只要掌握方法,掌握思想,做好边界检查,弄清每道题的题意,那么就可以举一反三,也不那么容易写出崩溃的代码。对于如何判断一个链表带环这个问题,可以这样来分析它如图是一个带环的链表,首先可以使用两个指针同指向链表的第一个节点,其中一个叫slow,另一个叫fast。其次让slow这个指针每次走一步,fast每次走两步,图中每个指针旁边的数字代表它所走的...原创 2018-05-04 11:25:10 · 1467 阅读 · 0 评论 -
二叉树の判断一个二叉树是否是另一个二叉树的子树
判断一棵二叉树是否是另一个二叉树的子树,主要分为两个步骤:首先由下图看出,当判断是否为子树时,需要判断每个节点的值是否相等其次,如果相等的话,对于其左右子树是否相等也需要进行相同的判断,则可使用递归来完成。需要注意的是,需要考虑边界的判断,如果子树为空的情况,或者只有一个子树的情况。/*struct TreeNode { int val; struct TreeNode *left; st...原创 2018-05-04 10:33:50 · 890 阅读 · 1 评论 -
使用栈实现迷宫
迷宫是个益智的小游戏,但是就算是个小游戏也会有外挂吧,那么就来写一个小小的迷宫来玩玩吧(虽然是程序自己走的。。)但是这个不重要,重要的是,我不用烧脑玩迷宫啊~//面向对象实现迷宫#include<stack>struct Pos{ int _row; //行 int _col; //列};template<size_t N>class Maze{...原创 2018-04-06 17:22:26 · 1051 阅读 · 0 评论 -
关于拷贝时内存重叠与不重叠的问题代码实现
C++里有两种拷贝方式,一种是strcpy,一种是memcpy实现如下:#include<iostream>using namespace std;#include<assert.h>char* MyStrcpy(char* dest,const char* src){ assert(src!=NULL&&dest!=NULL); char* t...原创 2018-03-13 15:36:20 · 457 阅读 · 0 评论 -
复杂链表的复制问题的分析以及代码实现
对于此问题采用化解法解决,分为三步进行:1、先复制所有的节点链接在原来的节点后面 void CopyList(RandomListNode* pHead) { RandomListNode* pNode = pHead; while(pNode!=NULL) { ...原创 2018-03-12 19:56:51 · 197 阅读 · 0 评论 -
##C++##逆置链表的升级版(k个节点的逆置)
逆置链表之前写过整条链表的逆置,今天在一本书上看到了关于k个节点的逆置。关于k个节点的逆置有两个方法方法一:利用栈来实现这个逆置,当进栈的个数达到了k个之后,就进行出栈操作,而当不足k个时,则直接连接在新链表的后面方法二:记录链表的第一个位置,走k步之后记录尾节点,并记录尾节点的next,然后将尾节点的next置空,逆置这段新链表,以此类推 知道这段链表的结束。代码实现如下://方法1:Nod...原创 2018-03-11 11:18:32 · 229 阅读 · 0 评论 -
##数据结构##二叉树的三种遍历,以及求叶子节点,第k层,求树的高度等代码实现
树:n个有限数据元素的集合结点:包含了数据和指向其他结点的指针结点的度:结点拥有的子节点的个数高度:树当中距根节点最远系欸但的路径长度前序遍历:根 左子树 右子树中序遍历:左子树 根 右子树后序遍历:左子树 右子树 根#include<iostream>#include<queue>#include<stack>using namespace s...原创 2018-01-07 17:44:09 · 527 阅读 · 0 评论 -
vector,list以及迭代器的使用与注意
C++库里提供了顺序表和链表的各种方法,虽然说不一定要能模拟出库里面的各种方法,但是会使用也是一种技能。 vector vector 就相当于是顺序表,但是它属于可动态增容的顺序表,但同时它也相当于一个容器,这个容器里可以装任何你想要装的数据。同时这里不是单单要介绍顺序表,而是顺序表和迭代器合起来使用。 在顺序表中,使用频率较多的函数就只有几个,模拟实现出来也不是很困难。#incl...原创 2018-01-06 15:38:00 · 1029 阅读 · 0 评论 -
模板----模板类、函数----模板特化----类型萃取
模板在C++里可是个好东西啊。 模板有模板类和模板函数。 用模板我们可以写出通用的函数或者是类。用模板可以实现类型萃取,类型萃取又是什么??它可以实现一些函数,不同的是它可以使这些函数变得简单高效,因为不管传什么类型它都可以一套解决,不要认为是开了挂,实际上它就是这么强大又好用。但是模板还是有一些地方是不能办到的,比如说常见的分离编译,我不敢说所有的编译器都不可以,反正我用的VS2013编译器...原创 2017-11-23 18:11:02 · 463 阅读 · 0 评论 -
多态&虚函数
继承模式分为单继承和多继承在多继承中会有相应的一些问题产生,比如数据冗余,二义性等问题,那么我们要如何解决这种问题。利用虚继承便可以解决,在虚继承的时候由虚基表可以去除数据冗余和二义性。 那么函数可不可以写成是虚函数呢?写成虚函数有什么作用? 在派生类里重写基类的虚函数可以实现多态。#include<iostream>using namespace std;cla...原创 2017-11-22 21:39:18 · 229 阅读 · 0 评论 -
明智的使用继承会为你带来好处
继承为什么要有继承?? 有些时候,我们要写好几段功能相似但又不同的代码,但是这些功能相似的代码重复的去写,就会显得冗余,这时就可以将这段代码分离出来,再让其他想要使用这段功能的类直接继承即可使用,而不出现冗余代码,提高了效率。 在C++中,继承又分为单继承和多继承。单继承比多继承要简单的多。继承的特点 1、析构时先析构子类的,再析构父类的 2、派生类的构造函数应在其...原创 2017-11-11 15:45:27 · 245 阅读 · 0 评论 -
使用智能指针解决可能导致的内存泄漏的问题
一个程序中可能会因为各种情况导致内存泄漏的问题,程序泄漏可能不会一下子被写程序的人发现,因为它可能是一点点的被泄漏,直到内存被耗尽之后才会知道内存泄漏这个问题,但是我们不应该写出这样的程序来坑我们自己。因此在写程序的时候应该尽量避免这类问题的产生执行流跳转是什么??在一个程序顺序往下执行的时候,在遇到return , break, goto,continue等语句的时候,就会引发执行流跳转。假...原创 2017-12-08 13:11:05 · 1891 阅读 · 0 评论 -
【C/C++】如何理解C/C++里的动态内存和资源管理
在写程序的时候,我们最关心的事情是什么?关心程序会不会出bug!!哈哈,开个小玩笑,但是往往我们在写一个程序时确实是非常关心程序会不会在运行时崩溃,或者编译时出错等问题,但是最关心的还是内存和资源管理了。 如果没有内存,程序恐怕也是没有意义的。就像你面前有一盘极其美味的食物,但是你的胃已经装满了大馒头,你也是吃不下的。原创 2017-11-04 16:51:22 · 406 阅读 · 0 评论 -
【C++】从C过渡到C++~
#include<iostream>using namespace std;int main(){ cout<<"This is a C++ program.\n"; return 0;}程序运行时输出:This is a C++ program.1)、首先我们可以看出程序的头文件变了,跟C语言的不一样,那是因为使用cout 需要用到头文件i...原创 2017-10-06 13:15:06 · 289 阅读 · 0 评论 -
【C++】String拷贝(包含深拷贝浅拷贝)以及拷贝构造函数中几种调用的情况
之前我们已经讲过了类和对象,但是其中我们没有仔细的分析构造函数以及拷贝构造函数。 现在我们仔细的来分析一下这两类函数。**构造函数** 在写构造函数时,必要情况下我们要给一些值进行初始化,不然在运行时可能会出现无法预知的错误 初始化也分为两种:原创 2017-10-22 17:58:13 · 687 阅读 · 0 评论 -
【C++】类和对象
之前已经说过类有三大特性,封装,多态,继承。 C++是一个面向对象的程序设计语言。对象是什么?客观世界里的任何一个事物都可以看成一个对象。任何一个对象都具有两个要素,属性和行为。一个对象往往是由一组属性和一组行为构成的。 现在来说说封装。原创 2017-10-06 16:09:08 · 201 阅读 · 0 评论 -
【C++】链表实现的各种情况(含面试题)
1.比较顺序表和链表的优缺点,描述他们分别在什么场景下使用?答:顺序表在空间上是连续的,并支持随机访问,用下标会很方便。在不增容的情况下,尾插的效率很高,但其他情况就不是很乐观。顺序表的高速缓存的利用率比链表高。而链表的头插以及中间插入的效率要比顺序表的效率要高,链表若需要增容会比顺序表要方便的多。原创 2017-09-19 16:40:33 · 419 阅读 · 0 评论 -
二叉树の把二叉树打印成多行&序列化二叉树
二叉树是一棵有层序的树,现在要求是把这棵树打印为每一层结点的值在一行即如图形式:使用数组形式的vector来存储每一行的元素,然后再将存有元素的vector存储到另一个vector里,这样打印出来的就是分别每一行元素/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; ...原创 2018-05-04 16:27:01 · 146 阅读 · 0 评论