![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 75
慕白昂
这个作者很懒,什么都没留下…
展开
-
C++:图解AVL平衡二叉树的原理
1. AVL树的性质AVL树是一种平衡二叉树,一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:它的左右子树都是AVL树左右子树高度之差(简称平衡因子)的绝对值不超过1(-1/0/1)2. AVL树的操作...原创 2021-02-27 16:29:30 · 208 阅读 · 0 评论 -
C++:底层数据结构之二叉搜索树
C++:底层数据结构之二叉搜索树1. 二叉搜索树概念二叉搜索树又称二叉排序树。它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树2. 二叉搜索树的特性特性:任意节点都比其左子树中所有节点大,比其右子树中所有节点小最左侧节点一定是最小的,最右侧节点一定是最大的中序遍历:可以得到一个有序序列3. 二叉搜索树的操作二叉搜索树的查找原创 2021-02-27 13:42:11 · 178 阅读 · 0 评论 -
C语言创建堆(按最小堆进行排序)
C语言创建堆(按最小堆进行排序)堆的概念及结构如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。堆的性质:1. 堆中某个节点的值总是不大于或不小于其父节点的值原创 2020-07-13 21:33:00 · 629 阅读 · 0 评论 -
C语言实现链式队列、顺序队列和循环队列
C语言实现链式队列、顺序队列和循环队列队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。循环队列循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个原创 2020-07-10 22:20:23 · 542 阅读 · 0 评论 -
C语言实现链栈和顺序栈
C语言实现链栈和顺序栈栈是一种线性表,所以栈也有线性表的两种存储结构(顺序存储结构和链式存储结构)。栈的顺序存储结构称为链栈,链式存储结构称为链栈。顺序栈利用一组地址连续的存储单元依次存放栈底到栈顶的数据元素,栈底位置固定不变,栈顶位置随着入栈和出栈操作而变化。链栈链栈是一种特殊的线性链表,和所有链表一样,是动态存储结构,无需预先分配存储空间。common.h#ifndef _COMMON_H_#define _COMMON_H_#include<stdio.h>#原创 2020-07-09 20:49:32 · 400 阅读 · 0 评论 -
C语言:旋转数组(数组的元素右移)
题目描述:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-10原创 2020-07-09 16:45:17 · 1249 阅读 · 0 评论 -
C语言解法:数组形式的整数加法
数组形式的整数加法对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274 +原创 2020-07-07 18:22:04 · 1738 阅读 · 0 评论 -
数据结构:创建一个二叉树结构且遍历二叉树
数据结构:创建二叉树且遍历二叉树概念一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。二叉树的特点:每个结点最多有两棵子树,即二叉树不存在度大于2的结点。二叉树的子树有左右之分,其子树的次序不能颠倒。二叉树的存储结构二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构。顺序存储:顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储原创 2020-05-15 16:41:14 · 452 阅读 · 0 评论 -
数据结构:无头单向非循环链表的实现(C语言)
数据结构:无头单向非循环链表的实现先来看看单链表的结构图单链表的结构非常简单,每个节点有两个区域组成一个是存放数据的数据域,即原创 2020-05-08 12:05:48 · 195 阅读 · 0 评论 -
数据结构:带头的双循环链表的实现
数据结构:带头的双循环链表的实现双向循环链表的结构图list.h创建一个结构体有头节点head的空链表再创建一个结构体,元素有两个指针分别指向该元素的前一个元素和后一个元素,即该元素的前驱和后继接着定义出双向循环链表的各个功能,给出所需的参数#ifndef _LIST_H_#define _LIST_H_#include<stdio.h>#incl...原创 2020-05-07 20:25:38 · 264 阅读 · 0 评论