自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 三.二叉树(4.实现链式结构二叉树)

本文介绍了链式二叉树的实现与遍历方法。首先说明了二叉树的链式存储结构,每个节点包含数据域和左右指针域。通过手动创建二叉树节点的示例代码,展示了构建二叉树的过程。重点讲解了三种递归遍历方式:前序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根),并给出了相应的代码实现。此外还介绍了二叉树的层序遍历方法,需要借助队列数据结构实现。最后提到了判断完全二叉树的方法以及计算二叉树节点数、叶子节点数、深度等基本操作。这些操作都体现了二叉树的递归特性。

2025-09-29 16:32:58 340

原创 三.二叉树(3.堆的算法、应用)

本文介绍了顺序结构二叉树的实现,重点讲解了堆的概念与实现方法。堆是一种特殊的完全二叉树,具有父节点值始终大于或小于子节点值的特性。文章详细阐述了堆的底层数组结构实现,包括初始化、插入、删除等基本操作,并重点分析了向上调整和向下调整两种核心算法及其时间复杂度。此外,还探讨了堆的两种典型应用:堆排序(包括升序和降序实现)和TOP-K问题解决方案,后者特别适用于海量数据中快速找出前K个最大/最小元素的场景。文中通过代码示例展示了如何利用小顶堆高效解决TOP-K问题,并给出了时间复杂度分析。

2025-09-29 16:15:33 366

原创 三 .二叉树(1、2树的概念、二叉树)

树是一种层次化的非线性数据结构,由根节点和若干互不相交的子树构成,具有递归性质。二叉树是树的特殊形式,每个节点最多有两个子节点(左/右子树),分为满二叉树和完全二叉树两种特殊类型。树的存储可采用顺序结构(适合完全二叉树)或链式结构(二叉链/三叉链)。树结构广泛应用于文件系统、数据库索引等场景,其核心特性包括节点度、层次、路径等基本概念。

2025-09-28 23:18:28 921

原创 二.栈和队列

本文介绍了栈和队列的基本概念与实现方式。栈遵循后进先出原则,包含压栈和出栈操作;队列遵循先进先出原则,包含入队和出队操作。文章详细说明了两种数据结构在C语言中的实现方法,包括结构体定义和相关操作函数。此外,还列举了4道相关算法题(有效的括号、用队列实现栈、用栈实现队列、设计循环队列),并解释了循环队列中不存储队尾数据的原因是为了区分队空和队满状态。这些内容为理解和实现基础数据结构提供了清晰指导。

2025-09-28 22:23:40 511

原创 一.顺序表和链表

线性表是存储相同特性元素的有限序列,包括顺序表、链表等结构。顺序表使用连续存储单元(通常为数组),分为静态(固定大小)和动态(可扩容)两种。链表通过指针实现非连续存储,分为单链表和双向链表。单链表每个节点包含数据和指向下一节点的指针;双向链表还包含指向前一节点的指针。顺序表适合随机访问但插入/删除效率低,链表插入/删除高效但访问需遍历。两者在空间利用和操作效率上各具特点,需根据具体需求选择。

2025-09-12 18:53:30 581

原创 Leetcode---轮转数组

摘要: 题目要求将数组元素向右循环移动k位。示例展示了移动前后的变化。提供了两种解法:方法一通过逐个移动元素实现,时间复杂度O(n*k);方法二利用三次逆置操作(先逆置前n-k部分,再逆置后k部分,最后整体逆置),时间复杂度O(n),空间复杂度O(1)。提示处理大k时需取模(k%=n),确保效率。进阶挑战为寻找更多解法并优化空间。

2025-09-12 17:14:15 134

原创 C++类和对象的初级和进阶知识总结

系统介绍了C++中类和对象的基础与进阶知识。基础部分涵盖类的定义方式(struct/class)、访问权限控制、类作用域、对象实例化及内存计算规则,重点讲解了this指针的原理和应用。进阶部分深入剖析六大默认成员函数(构造、析构、拷贝构造、赋值重载、取地址重载),并详细讲解了初始化列表、explicit关键字、static成员、友元机制和内部类等高级特性。文章通过学生类、日期类等实例,结合内存对齐、深浅拷贝等概念,完整呈现了面向对象编程的核心机制,特别强调了构造函数与初始化列表的区别、const成员处理。

2025-07-22 13:08:05 1001

原创 C++类和对象(下)——类型转换、staic、友元、内部类、匿名对象……

本文摘要: C++进阶知识主要涵盖构造函数初始化列表、类型转换、static成员、友元、内部类、匿名对象及编译器优化等内容。重点包括:1) 构造函数初始化列表的使用规则和注意事项;2) explicit关键字限制隐式类型转换;3) static成员的声明、初始化和访问特性;4) 友元函数和友元类突破封装限制的机制;5) 内部类的定义和特性;6) 匿名对象的生命周期特点;7) 编译器对对象拷贝的优化策略。这些知识点深入C++面向对象编程的核心机制,涉及内存管理、访问控制和性能优化等重要方面。

2025-07-22 12:48:35 1143

原创 C++类和对象(中)——6个默认成员函数

本文系统介绍了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值运算符重载等核心概念。重点分析了各类成员函数的特点和实现要点:构造函数负责对象初始化,可重载;析构函数完成资源清理,每个类只能有一个;拷贝构造函数实现对象拷贝,需区分深浅拷贝;运算符重载则扩展了类的操作能力。通过日期类(Date)和栈类(Stack)的实例代码,详细演示了这些成员函数的实际应用场景和注意事项。文章还特别强调了默认生成函数与显式实现的区别,以及const成员函数、取地址运算符重载等高级特性。

2025-07-20 10:49:31 642

原创 C++类和对象(上)——类、实例化、this指针

本文介绍了C++中类的定义与使用。类的定义使用class关键字,包含成员变量和成员函数,通过访问限定符(public/protected/private)实现封装。类定义了一个新的作用域,成员函数在类外定义时需使用作用域操作符。类实例化时会占用物理空间存储成员变量,对象大小遵循内存对齐规则。this指针是成员函数的隐含形参,指向调用该函数的对象地址,用于访问对象成员。文章通过Stack和Date类的示例,展示了类的定义、实例化和this指针的使用方法。

2025-07-19 11:24:56 715

原创 快慢指针找中间节点

通过快慢指针,可以在一次遍历中找到链表的中间节点。当快指针到达链表末尾时,慢指针正好位于链表的中间。

2025-05-13 09:20:23 243

原创 数据结构——队

对队的结构以及对队的一系列操作进一步理解提示:以下是本篇文章正文内容,下面案例可供参考这里实现了对队列的定义和对其的一些可视化操作,在操作过程之中一定要搞清楚队列的底部构建是有链表构成的,而链表的底部构建是由节点构成的,所以要实现队列就必须对链表的结构十分了解,其中之所以队列的底部不由数组构建是因为考虑到了时间复杂度等因素。一、二、1.2.

2025-05-13 09:05:11 304

原创 指针变量类型的意义

1、指针变量的类型决定了对解引用指针的时候有多的权限(一次可以操作几个字节)。2、指针类型决定了指针向前或者向后走一步有多大(距离),即所谓的步长。3、这一点其实需要在《深入理解指针》可以涉及到。

2024-06-04 18:02:26 460

原创 C语言中的strlen函数(利用来求字符串的长度)

对于strlen函数和sizeof函数的引用对象不同这里利用数组中的两个算法问题进行探讨cplusplus网站对strlen函数的介绍strlen函数就是用来求字符串的长度,大多数情况是利用在数组中sizeof 计算数组元素的字节,利用字节总数和数组中首元素的字节数相除,便可以计算出总的元素个数。

2024-05-18 18:09:34 1169 1

空空如也

空空如也

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

TA关注的人

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