自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 C++中类的6个默认成员函数

这块儿就写了Stack的构造函数和析构函数,这里你看~这个析构函数其实跟咱们之前写的StDestory挺相似的,但是之前咱写栈的时候,你要考虑各种可能突然终止的情况,再必须调用StDestory,如果不调用,那么就会产生内存泄露,但是析构函数就不一样啦,它会在每次函数生命周期结束的时候自动调用!你听听,他的名字,也有构造,但是区别是,他是拷贝,对啦,他就是拷贝对象A,用来初始化对象B,所以A和B就跟双胞胎似的。这就是我每次加上当前月的天数,然后如果他≤0,那就给我进去,月份--,加上当月的天数,依次循环。

2025-11-15 22:38:08 907

原创 常见排序算法

不是角标昂),然后继续找,依次类推,直到左角标等于右角标,甚至右角标小于左角标,再跳出循环,交换目标数据和当前角标的正确值,最终返回目标数据的角标,他就在最终应该呆的地方啦,然后从左边儿,右边儿,依次递归,最终排序成功。这个算法是先保存最左边儿的数,然后他就想当于是一个空白,因为你保存了这个数呢,然后从右边儿开始找一个比这个数小的数,放在那个空白处,这下空白处就刷新了,右边儿就出现了一个空白处,再从左边儿找,找一个大于目标数的数,再放在右空白处,以此类推,最后的空白处,放目标数,这样他就在应该的位置上啦。

2025-10-27 22:42:03 439

原创 续链式二叉树(层序遍历和习题)

相同的值,那不就是父节点的分别和左右孩子的val相等就行了嘛,相等就继续往下走,但是,如果不想等,就返回一个false呗,最后要是走到结尾root=NULL,那不就是对喽~全相等嘛,然后最后的返回值,思考一下,是不是他的左右子树都必须是true,才能是完全的单值二叉树!检查他是否轴对称,大概思路就是,一个从左边儿走,一个从右边儿走,然后就和检查两个树是否一样有点类似了,如果左和右都能走到空,那就证明左右对称嘞,如果只有一个为空,或者值不相等,那就不对称啦,返回false就完事儿啦。

2025-10-13 00:10:03 360

原创 二叉树的基本操作

就是从最后一行开始,最后一个节点依次向上,你想想,那是一个等比数列,最下面一层的节点占总数的50%,所以当然向下调整效率高了!向下调整就是找到最后一个非叶节点,然后比较他和他的孩子大小呗,先比较比较他滴左右孩子,找大的再和那个非叶结点,也就是父节点,比较大小呗,如果孩子大,那不就把老爸往下调整调整,让他往下稍一稍,这不就是向下调整啦?堆,分为大根堆和小根堆,那就很简单呀,大根堆大根堆,那就是大根呀,也就是他的根节点是最大的,然后依次减小,保证他的父节点比两个子节点都大就好啦,小根堆反之也是。

2025-09-23 22:33:30 754

原创 认识树与二叉树

满二叉树:简单来说就是每一层的节点全部达到最大值,是一颗满树,第一层1,第二层2,第三层4,第四层8以此类推,他的当前层数节点=2的层数次方。然后还有一个就是经常会说的父节点(双亲结点),子节点,就如同①是父节点,②③④是他的子节点,②又是⑤⑥⑦的子节点。二叉树,那就是两个叉呀~,也就是他最多只能有两个子节点,可惜没有,可以有一个,可以有两个,再多就不行了昂!他这个比较简单,就是左孩子的值小于父节点的值,右孩子的值大于父节点的值就可以啦~高度,就是他最高是多高~这棵树的好度就是红色轨迹,4~

2025-09-21 13:30:19 261

原创 队列的基本操作

看他是不是空队列,如果是空队列的话,那么插入这个数据后,他的头指针和尾指针是不是都应该指向这个新加入的节点呢?哈哈,其实是因为,这儿对头节点和尾节点又封装了一个结构体,也可以不封装,但是你传参就太麻烦了昂,要传头,传尾,还要传个数,太多啦,封装起来会简单点儿呢。队列的删除,这里也要判空昂,空就不能删啦,另外它是头删呢昂,我之前都搞错啦,不要搞混了昂,可以再看看最上面的图呢。下面儿是队列的初始化,这很简单了昂,size表示个数,初始化0就行。创建后一定要记得销毁!所以队列,只能从队头出数据,从队尾插入数据!

2025-09-20 20:25:01 136

原创 栈的基本操作

栈的判空,这里和你初始化top是关联的,初始定义top是什么,后面儿判断top是什么就好啦,我定义的top=0,每次先给他赋值,再++,所以只需要判断top是否==0。提早写一个栈的销毁,每次记得要销毁栈昂,不然会空间泄露的呢,使用完这个函数记得把ps置空!栈的插入,这块儿就要和动态顺序表一样,考虑满的问题,我是定义top为0,并且先插入数据再top++栈的删除,这儿就可以用咱的函数啦,刚写得判断栈是不是空,如果空,那就不能删除了昂。接下来,栈的初始化,其实也就是动态链表的初始化。接下来看看栈的基本操作。

2025-09-20 14:04:35 363

原创 双链表的基本操作

可以避免用二级指针,因为咱们传参数可以直接传指针也指向哨兵卫,这时候不需要改变他本身的指向~只需要改他的成员,(例如头插一个数据,只需要让哨兵卫的->next指向那个新节点),因此只需要传一级指针。双向链表的销毁就比较简单,得先断言,哨兵卫不能为空昂,不然就是传错值了呢,然后从哨兵卫的next开始释放,最后再释放哨兵卫,记得置空哦~避免野指针。然后写一个创建节点的函数,后面儿插入节点时,用着就会十分方便,这儿我省略了对newnode的判断,一般他都是创建成功的,但是尽量加上呢。双链表滴头删,也要注意!

2025-09-20 10:36:58 291

原创 单链表的基本操作

这时候直接&结构体,是不是就不太合适呢?那不纯纯是传值调用嘛,你搁那个函数里改的再嗨,外面儿的实参也不会发生一丁点的改变,所以呢,你选择传&一级结构体指针,所以形参就是二级指针啦!单链表在pos位置前插入数据,这时你看,十分麻烦,先考虑pos是不是头,要不要来一个头插,然后再考虑pos在不在*pphead这个链表里面儿,并且还要遍历链表找到pos前的那个元素数据,十分麻烦。单链表的查找,相当简单了昂,只不过要注意,先判断,这个链表是不是空,如果不判断的话,直接进while循环,如果是空链表,会越界访问的。

2025-09-19 18:08:21 830

原创 静态顺序表和动态顺序表

静态单链表呀,它是固定大小滴,当你把它创建好,ok,老铁,他就没办法动喽,而动态链表呢,它申请一块儿空间(malloc),等你觉得不够用了,咱就可以再申请呗(realloc),这就是两个最大的区别啦。你看动态顺序表的中间插入删除是不是效率就特别低,要移动太多太多数据,还容易出错,所以,动态顺序表适合尾插尾删,在以后只需要对数据进行尾插尾删的时候,可以考虑动态顺序表(栈),这时候他的效率尤其之高。以上是比较基础的动态顺序表表操作,尤其是插入删除,都是在尾部进行的,如果没在尾部呢?

2025-09-19 12:20:54 340

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除