数据结构
文章平均质量分 89
打鱼又晒网
不幻想, 不侥幸。冷静,理智地应对变化。
展开
-
数据结构算法——链表带环问题——数学深度解析
算法题——带环链表原创 2024-05-01 22:35:19 · 5308 阅读 · 117 评论 -
时间,空间复杂度讲解——夯实根基
时间复杂度与空间复杂度讲解!!原创 2024-04-25 23:49:12 · 2938 阅读 · 110 评论 -
顺序表实战——基于顺序表的通讯录
定义结构体, 我们要知道我们的联系人的成员变量应该有什么。首先, 联系人一定要有姓名;其次, 联系人要有性别和电话。而且, 我们可以加上一个地址,还有年龄。那么基本的联系人的结构体里面的成员变量我们就考虑清楚了。现在我们来进行定义结构体#define NAME_MAX 20//最大的名字长度#define GENDER_MAX 10//最大的性别长度#define ADRESS_MAX 30//最大的地址长度#define TEL_MAX 12//电话的长度是11, 最后一个留给字符零。原创 2024-04-08 15:50:19 · 1646 阅读 · 124 评论 -
排序——希尔排序、插入排序
本节复习排序中的希尔排序,希尔排序属于插入排序。希尔排序的代码和插入排序非常类似。思想却相对于插入排序来说复杂。在复习希尔排序之前, 我们需要先复习一下插入排序。原创 2024-03-04 20:22:16 · 1173 阅读 · 22 评论 -
排序——堆排序
在复习堆排序之前, 首先我们需要回顾一下什么是堆。堆的本质其实是一个数组。它的物理结构本质上是一个数组。但是它的逻辑结构是一棵完全二叉树。我们在判断一个数组是否是一个堆的时候根据的就是它的逻辑结构。那么怎么根据它的逻辑结构判断是否是一个堆。首先堆的逻辑结构的二叉树的每一个孩子节点都大于它的每一个父亲, 就是堆。这种堆叫做小堆。如果它的逻辑结构的每一个孩子节点都小于它的父亲节点。它同样是个堆, 同时这种堆叫做大堆。原创 2024-03-04 19:45:55 · 1024 阅读 · 5 评论 -
排序——归并排序
归并排序和快排一样, 都是一种利用二叉树分治思想实现的排序。同时归并排序也和快排一样有递归归并排序和非递归归并排序两种。本节主要复习归并排序, 并且两种实现方式都会复习到。原创 2024-03-03 22:24:45 · 1081 阅读 · 1 评论 -
排序——手撕快排
找到后将值放到左边的坑里,这里的坑被填了。然后右指针指向的位置的值相当于没了, 就让坑指向该位置。往复, 直到两指针相遇, 将保存的key的值放到坑里。这个key的值就是排好的单趟的值。这里为代码。原创 2024-03-02 23:00:49 · 1129 阅读 · 7 评论 -
堆——c语言实现堆结构
本节复习堆, 堆分为逻辑结构和物理结构, 堆的物理结构是一个数组。堆的逻辑结构是一个二叉树。其中堆又分为大堆和小堆。那么如何分辨大堆和小堆?分辨大堆和小堆我们要看堆的逻辑结构,对于一棵二叉树。每个非叶子节点都可能有一个左孩子或者右孩子, 或者两个孩子全部都有。而堆是一个完全二叉树。也就是说, 每个非叶子节点都有两个孩子或者有一个左孩子。那么, 大堆就是每个父亲节点的值都大于左孩子和右孩子的值。小堆就是每个父亲节点的值都小于左孩子和右孩子的值。现在我们来实现一下堆的结构。原创 2024-03-01 23:35:10 · 754 阅读 · 4 评论 -
二叉树的增删查改
本节复习二叉树的增删查改, 二叉树的知识相对于前面的循序表, 链表, 以及栈和队列都要多一些。同时二叉树的增删查改理解起来相对来说要困难一些。本节来好好复习一下二叉树的增删查改。原创 2024-02-29 20:32:41 · 693 阅读 · 3 评论 -
线性表——单链表的增删查改
本节复习链表的增删查改首先, 链表不是连续的, 而是通过指针联系起来的。如图:这四个节点不是连续的内存空间, 但是彼此之间使用了一个指针来连接。这就是链表。现在我们来实现链表的增删查改。原创 2024-02-28 21:52:09 · 1673 阅读 · 3 评论 -
栈和队列——c语言实现队列
本节复习队列。首先回顾队列的性质:先入先出。 队列的特点就是先入先出, 先入队列的在队列的头部, 后入队列的在队列的尾部。目录队列的全部接口准备文件创建队列的结构体蓝图队列的初始化队尾入队列对头出队列获取队列头部元素获取队列尾部元素获取队列中有效元素个数判断队列是否为空销毁队列队列的全部接口//队列的初始化void QueueInit(Queue* pq);//队尾入队列void QueuePush(Que原创 2024-02-28 19:28:43 · 841 阅读 · 3 评论 -
栈和队列——c语言实现栈
本节复习栈和队列中栈的增删查改。首先回顾一下栈的性质: 栈的存储数据的原则是“后入先出”, 先入的在栈底, 后入的在栈顶。弹出数据时在栈顶弹出。开始实现栈的接口//栈的初始化//入栈//出栈//获取栈顶元素//获取栈中有效元素的个数//检测栈是否为空//销毁栈。原创 2024-02-28 17:07:11 · 946 阅读 · 1 评论 -
线性表——带头循环双向链表的增删查改
本节复习带头循环双向链表的增删查改。带头循环双向链表的结构很完美, 是我们日常生活中使用最多的一种链表的形式。但是考的频率要少于单链表。原创 2024-02-27 21:10:29 · 954 阅读 · 0 评论 -
顺序表知识点——顺序表的增删查改
从本节开始, 复习数据结构。空间复杂度还有时间复杂度之后利用例题学习。这节先学习顺序表的增删查改。首先, 顺序表有点类似于数组, 都是一块连续的内存空间。如图:这就是顺序表。顺序表又分固态的顺序表和动态的顺序表。但是固态的顺序表实用性不大,在实际生活中我们很难把握数据的数量。固态的顺序表可能导致开辟的空间过大或者过小, 所以动态的顺序表就是我们的首选。现在我们主要以动态的顺序表为例, 学习一下顺序表的增删查改。原创 2024-02-25 22:44:45 · 1314 阅读 · 1 评论