数据结构专题

数据结构——软考探究(一)

继上篇博客之后,对软考涉及的知识有了更深入的研究,本篇博客将会和大家分享对于数据结构的学习。数据结构是软考中比较重要的一块知识,它介绍了计算机中数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。对于我们对于计算机知识的深入研究有很好的帮助,同时以此为基础也会很好地帮助我们去挖掘计算机的潜能,实现各方面性能的最优化。 对于数据结构的知识,自己总结了以下的框图:

【数据结构】排序(直接插入排序,希尔排序)

目录 一、排序的概念  二、常见的排序算法  三、插入排序 1.直接插入排序  1.直接插入排序实现 2.直接插入排序特性及复杂度 2.希尔排序  1.排序思路 2.希尔排序实现  3.希尔排序的特性及复杂度  一、排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在

[数据结构]红黑树的原理及其实现

文章目录 红黑树的特性红黑树的时间复杂度推导:结论红黑树与AVL树比较 红黑树的插入红黑树的节点定义调整策略思考情况2:思考情况3: 代码实现myBTRee.htest.cpp 红黑树的特性 红黑树最常用的平衡二叉搜索树。跟AVL树不同的是,红黑树是依靠节点的颜色来维护平衡的。虽然任意节点不具备严格平衡,但是数据的查找、插入、删除等操作效率依旧出色。下面是红黑树的一些特性:

408学习笔记-数据结构-2-线性表

线性表 1、逻辑结构 1、数据结构只有一种逻辑结构,而可以有两种存储结构,有多种抽象运算。 2、线性表是一种逻辑结构,属于总线性结构——线性结构的一种,同属于线性结构的逻辑结构还有:栈、队列和数组。 3、线性表定义:具有相同数据类型的 n n n 个数据元素的有限、有序的列表。 4、线性表的特点: (1)表中元素有限。 (2)表中元素具有逻辑上的顺序性,表中

一 数据结构概述

数据结构定义:        我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能而执行的相应的操作(比如查找某个元祖,删除某个元素,对某个元素进行排序),这个相应的操作也叫作算法。 数据结构 = 个体 + 个体的关系         算法定义: 结题的方法和步骤 算法 = 对存储结构的操作(狭义定义)

数据结构初阶 顺序表的补充

一. 题目的要求 写出三种链表的接口函数 它们的功能分别是 1 查找数的位置 2 在pos位置插入值 3 在pos位置删除值 二. 实现pos 这个其实很简单 找到一步步遍历 找到这个数字就返回 找不到就提示用户下 这个数字不存在 int SLFind(SL* ps,SLDateType x){assert(ps);int i = 0;for (i = 0; i < ps->si

java数据结构与算法(二叉树前序遍历)

前言 二叉树的前序遍历是一种特定的遍历方法,按照根节点、左子树、右子树的顺序进行遍历。和中序遍历和后续遍历类似,只是先将遍历到的根节点先做输出。 实现原理 前序遍历的具体过程如下: 前序遍历是一种用于二叉树的遍历方式,其特点是“左子树-树根-右子树”。具体步骤如下: 从根节点开始,首先访问根节点。递归地遍历左子树。递归地遍历右子树。 这个过程会一直重复,直到所有节点都被访问。在前序遍历

数据结构与算法学习笔记三---栈和队列

目录 前言 一、栈 1.栈的表示和实现 1.栈的顺序存储表示和实现 1.C语言实现 2.C++实现 2.栈的链式存储表示和实现 1.C语言实现 2.C++实现 2.栈的应用 1.数制转换 二、队列 1.栈队列的表示和实现 1.顺序队列的表示和实现 2.链队列的表示和实现 2.循环队列 前言     这篇文章主要介绍栈和队列的用法。 一、

Redis数据结构-RedisObject

1.7 Redis数据结构-RedisObject Redis中的任意数据类型的键和值都会被封装为一个RedisObject,也叫做Redis对象,源码如下: 1、什么是redisObject: 从Redis的使用者的角度来看,⼀个Redis节点包含多个database(非cluster模式下默认是16个,cluster模式下只能是1个),而一个database维护了从key space到ob

《算法导论》学习笔记之Chapter10---数据结构之链表

链表定义:链表是这样一种数据结构,其中的各对象按线性顺序排列,与数组的线性顺序由下标决定不同,链表的顺序是由各个对象里的指针决定。 链表分为:单向链表,双向链表,还有循环链表。 链表支持的操作有:查找Search;插入Insert;删除Delete; 双向链表的查找操作就是从表头开始对比查找,很简单;插入操作,是根据插入的数据的指针属性来寻找要插入的位置;之后修改相关元素的pre和next指

Java数据结构-HashMap(八)

Map接口的框架参考: http://blog.csdn.net/u010483016/article/details/45568281。 HashMap参考阅读:http://alex09.iteye.com/blog/539545,表示感谢。 AbstarctMap类实现了Map接口的大部分方法,避免了子类的重复实现,但是其中的一些方法对于大容量的Map来说效率不理想。HashMap继承了

Java数据结构-Map(七)

Map的定义: public interface Map<K,V>,是一个映射接口,其中存储的内容是键值对(key-value)。 每个键映射到一个值,不允许有重复的键。键和值的类型在申明Map的同时作出申明。 Map的框架图如下: 感谢 http://www.cnblogs.com/skywang12345/p/3308931.html 其中SortedMap实现了排序,因此

数据结构(十五)----排序算法(2)

目录 一.选择排序 1.简单选择排序 2.堆排序 •建立大根堆 •基于大根堆进行排序 堆排序算法效率: 堆排序算法稳定性: 3.堆的插入和删除 •在堆中插入新元素 •在堆中删除元素 二.归并排序 归并排序算法效率: 归并排序算法的稳定性: 三.基数排序 基数排序的算法效率: 基数排序算法的稳定性: 下一篇博客会着重讲外部排序~ 一.选择排序 每一趟在待排序

数据结构~~带环链表的环开始的节点位置**两种方法

1.带环链表环开始的位置 (1)上面的这个测试用例使用的是包含了4个节点的带环链表,我们要找的就是链表里面的环开始的节点的位置,拿这个测试用例而言,就是2这个节点,从这个节点开始,我们的链表就形成了一个环,我们要设计程序说明在普适的情况下面如何找到这个环开始位置的节点; (2)我们这里的思路和之前的一个判断链表是否存在环的相同的思路,我们的快指针肯定会先进入这个环,慢指针后进入这个环,当慢

数据结构之栈的基本功能实现

栈是一种基本的数据结构,在很多地方都会用到。这次复习,通过以下代码实现了栈的一些基本功能 /*顺序栈的基本功能的实现*/#include<stdio.h>#define TRUE 1#define FALSE 0#define Stack_Size 50#define StackElement chartypedef struct{StackElement elem[Stack_S

数据结构之线性表的顺序存储

为了复习下数据结构,最近开始着手捡捡原来学过的数据结构,从最简单的顺序存储的线性表开始... 代码很简单,对于自己来说起到一个督促作用 #include<stdio.h>#include<string.h>#define MAXSIZE 100#define OK 1#define ERROR 0typedef struct{char elem[MAXSIZE];int last;

数据结构--AVL树

一、什么是AVL树 1、AVL树的概念         二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查 找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了一种解决上述问题的方法: 当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超

【数据结构与算法】LeetCode:哈希表

文章目录 哈希表一般查找 (键查找)计数查找 (值查找)键、值查找缓存复杂链表的复制 哈希表 哈希表的用法主要包括: 查找:在哈希表中,数据被存储在键值对中,键可以用作索引来访问数组中的数据,因此可以快速查找任何键对应的值。 计数:例如,统计一个字符串中每个字符出现的次数,或者统计一个数组中不同元素的数量等。 缓存:可以将经常访问的数据缓存在哈希表中,这样在需要访问这些

深入浅出Java中的数据结构:LinkedHashMap详解

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛   今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。   我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初

【数据结构】栈的实现(链式栈)

文章目录 栈的实现(链式栈)栈的定义初始化栈进栈判断是否为空栈出栈销毁栈获取栈顶元素获取栈的长度栈的打印 完整代码(包括测试代码)Stack.hStack.ctest.c 栈的实现(链式栈) 首先新建一个工程: Stack.h(链式栈的类型定义、接口函数声明、引用的头文件) Stack.c(链式栈接口函数的实现) test.c(主函数、测试栈各个接口功能) 完整的代码放在后

【数据结构与算法】关于--树

目录 一:什么是树? 二:树的相关概念 三:树的表示 一:什么是树? 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。将它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。  有一个特殊的结点,称为根结点,根节点没有前驱结点。除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,

数据结构与算法-排序算法3-插入排序

目录 1.插入排序: 1.介绍: 2.动态图解 3.举例 4.小结插入排序规则 5.插入排序代码 6.运行时间 代码: 运行结果: 1.插入排序: 1.介绍: 数组中n个元素,把这n个待排序元素看成一个有序序列和一个无序序列。开始时有序序列中只有一个元素,无序序列中有n-1个元素。排序过程中每次从无序序列中取出第一个元素,把它与有序序列中元素进行比较,将它插入到有序

Python实现各类数据结构和算法---计数排序

计数 排序 假设前提:n个输入元素中的每一个都是在0到k区间内的一个整数,其中k为某个整数 基本思想:对每一个输入元素x,确定小于x的元素个数。利用这一信息,就可以直接把x放到它 输出数组中的位置上了。例如:如果有17个元素小于x,则x就应该放在第18个输出位置上。 当有几个元素相同时,这一方案要略作修改。 #coding:utf-8a=[2,5,3,0,2,3,0,3]def c

数据结构(栈):中缀表达式转后缀表达式题型的快速图解法(求栈中操作符等)

2024/5/14:         学编译原理的时候接触到了递归树的画法,中缀转后缀的解题过程和编译原理中的递归树有异曲同工之妙。今日解题的时候想了一下图解法,遂记录,本质上是对递归树的改进。  图解原理概述         以表达式 a+b*(c-d)+e 为例,先将其转化为二叉树,转化过程暂且不表,请读者自搜。总之能画成以下这样,若要得出后缀表达式则请后序遍历此树: 图1 基

数据结构与算法学习笔记十---链队列的表示和实现(C语言)

目录 前言 1.什么是链队 2.链队的表示和实现 1.定义 2.初始化 3.销毁 4.清空 5.空队列 6.队列长度 7.获取队头 8.入队 9.出队 10.遍历队列 11.完整代码 前言     本篇博客介绍链栈队列的表示和实现。 1.什么是链队     链队是采用链式存储结构实现的队列。通常链队使用单链表表示。     图1.链队的示意

探索数据结构:堆的具体实现与应用

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 堆的概念 堆(Heap)是计算机科学中一类特殊的数据结构。堆通常是一个可以被看作一棵完全二树的数组对象,若满足: 任意节点的值>=其子节点的值。则称为大根堆。任意节点的值<=其子节点的值。则称为小根堆。 2. 堆的实现方式 虽然