数据结构与算法
文章平均质量分 81
用来记录数据结构和算法,以及力扣题解
写Bug那些事
开始学习!!!
展开
-
十大排序算法(C++版)
十大排序算法前言一、直接插入排序二、折半插入排序三、希尔排序总结前言什么是排序? 排序:将一组杂乱无章的数据按一定规律顺次排列起来。即,将无序序列排成一个有序序列(由小到大或由大到小)的运算。排序方法的分类 按数据存储介质:内部排序和外部排序 按比较器个数:串行排序和并行排序 按主要操作:比较排序和基数排序 按辅助空间:原地排序和非原地排序 按稳定性:稳定排序和非稳定排序 按自然性:自然排序和非自然排序一、直接插入排序基本思想: 每步将一个待排序的对象原创 2022-02-03 00:18:55 · 4837 阅读 · 3 评论 -
数据结构-第五章 树-哈夫曼树
哈夫曼树哈夫曼树的基本概念引出哈夫曼树哈夫曼树的构造算法哈夫曼树-采用顺序存储结构原创 2022-02-01 23:48:07 · 1875 阅读 · 0 评论 -
数据结构-第四章 广义表
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现⚡️数据结构-第二章(7)-双向链表和循环链表数据结构-第四章 广义表数据结构广义表广义表的性质案例总结广义表 广义表又称ListListList,是n>=0n&原创 2022-01-28 13:28:06 · 2229 阅读 · 2 评论 -
数据结构-第四章 数组
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现⚡️数据结构-第二章(7)-双向链表和循环链表数据结构-第四章 数组数据结构数组数组的抽象数据类型定义数组的顺序存储对称矩阵压缩存储对称矩阵三角矩阵对角矩阵稀疏矩阵存储数组原创 2022-01-27 17:56:01 · 377 阅读 · 0 评论 -
数据结构-第四章(2)-串的模式匹配算法
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现⚡️数据结构-第二章(7)-双向链表和循环链表数据结构-第四章(2)-BP算法数据结构BF算法KMP算法总结BF算法 Brute-Force简称BF算法(简单匹配算法)原创 2022-01-26 20:45:34 · 1082 阅读 · 0 评论 -
数据结构-第四章(1)-串
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现⚡️数据结构-第二章(7)-双向链表和循环链表数据结构-第四章(1)-串数据结构串串的定义案例引入串的类型定义、存储结构及运算串的顺序存储结构串的链式存储结构串 &am原创 2022-01-25 22:42:39 · 712 阅读 · 0 评论 -
单链表(C++版)
数据结构单链表-(可执行完整代码)数据结构单链表操作案例一、制作界面二、链表类型定义三、创建链表四、单链表判空五、求链表长度六、对链表取值七、单链表的查找八、单链表的插入九、单链表的删除十、清空单链表十一、销毁单链表十二、合并单链表完整版总结单链表操作案例 关于单链表的一些描述可以参考数据结构-第二章(5)-链式存储结构和数据结构-第二章(6)-单链表基本操作的实现一、制作界面//界面制作void showMenu(){ cout << "*****************原创 2022-01-24 18:25:19 · 1007 阅读 · 4 评论 -
数据结构-第三章-栈和队列(5)-链队
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现⚡️数据结构-第二章(7)-双向链表和循环链表⚡️数据结构-第二章(8)-线性表的应用(线性表合并)数据结构-第三章-栈和队列(5)-链队数据结构链队-队列的链式表示和实现原创 2022-01-23 17:33:20 · 897 阅读 · 0 评论 -
数据结构-第三章-栈和队列(4)-循环队列
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现⚡️数据结构-第二章(7)-双向链表和循环链表⚡️数据结构-第二章(8)-线性表的应用(线性表合并)数据结构-第三章-栈和队列(4)-循环队列数据结构队列队列的抽象数据类型原创 2022-01-22 13:45:32 · 1439 阅读 · 0 评论 -
数据结构-第三章-栈和队列(3)-链栈的表示和实现
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现⚡️数据结构-第二章(7)-双向链表和循环链表⚡️数据结构-第二章(8)-线性表的应用(线性表合并)数据结构-第三章-栈和队列(3)-链栈的表示和实现数据结构链栈的表示和实原创 2022-01-21 23:55:10 · 1017 阅读 · 0 评论 -
数据结构-第三章-栈和队列(2)-顺序栈
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现⚡️数据结构-第二章(7)-双向链表和循环链表⚡️数据结构-第二章(8)-线性表的应用(线性表合并)⚡️数据结构-第三章-栈和队列(1)-定义和特点数据结构-第三章-栈和原创 2022-01-20 23:39:26 · 821 阅读 · 2 评论 -
数据结构-第三章-栈和队列(1)-定义和特点
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现⚡️数据结构-第二章(7)-双向链表和循环链表⚡️数据结构-第二章(8)-线性表的应用(线性表合并)数据结构-第三章-栈和队列(1)-定义和特点数据结构前言一、栈的定义和特原创 2022-01-17 22:41:30 · 1639 阅读 · 2 评论 -
数据结构-第二章(8)-线性表的应用(线性表合并)
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现数据结构-第二章(7)-双向链表和循环链表数据结构一、线性表的合并二、有序表的合并顺序表实现链表实现二、双向链表总结一、线性表的合并问题描述: 假设利用两个线性表La和原创 2022-01-14 09:08:03 · 3381 阅读 · 6 评论 -
数据结构-第二章(7)-双向链表和循环链表
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)⚡️数据结构-第二章(5)-链式存储结构⚡️数据结构-第二章(6)-单链表基本操作的实现数据结构-第二章(7)-双链表、循环链表数据结构带头节点的单链表总结带头节点的单链表 循环链表(circular linked list) 是链表的一种特殊形式,它的特点原创 2022-01-13 15:41:37 · 1494 阅读 · 0 评论 -
递归和迭代两种方法解决二叉树前、中、后序遍历
递归和迭代解决前、中、后序遍历前言一、前序遍历问题描述解法一:递归总结前言递归三部曲:递归函数的参数和返回值、终止条件、单层递归的逻辑,144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历提示:以下是本篇文章正文内容,下面案例可供参考一、前序遍历问题描述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例原创 2022-01-11 23:57:20 · 521 阅读 · 1 评论 -
双指针解决链表中倒数第k个节点和链表中间结点
双指针解决链表中倒数第k个节点和链表中间结点前言一、剑指 Offer 22. 链表中倒数第k个节点问题描述方法一:快慢指针方法二:循序查找二、876. 链表的中间结点总结前言对于求链表中间结点和链表倒数第k个结点,我们都可以采用双指针来解决,废话不多说直接上题:一、剑指 Offer 22. 链表中倒数第k个节点问题描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次原创 2022-01-07 15:22:42 · 379 阅读 · 3 评论 -
数据结构—树和二叉树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、树的定义二、树的基本术语二叉树二叉树的定义总结前言 我们知道线性结构的特点是,线性结构它存储的逻辑元素是一对一的,什么是一对一呢?就是元素的前驱和后继的个数都是唯一的,那么对于非线性结构,元素的前驱和后继的个数是不唯一的。对于树形结构来说它的前驱是唯一的,后继就不一定唯一了。图形元素则前驱不唯一,后继也不唯一。本章介绍属性结构一、树的定义树的定义是一个递归的定义(嵌套的定义)树的表现形式:二、树的原创 2022-01-06 23:32:53 · 771 阅读 · 2 评论 -
算法经典面试题—斐波那契数列&爬楼梯
算法经典面试题—斐波那契数列&爬楼梯前言一、爬楼梯题目描述题解方法一:直接递归方法二:优化递归方法三:循环二、斐波那契数列题目描述题解方法一方法二总结前言题目来源于:剑指 Offer 10- I. 斐波那契数列和力扣70. 爬楼梯一、爬楼梯题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 +原创 2022-01-04 15:56:06 · 777 阅读 · 4 评论 -
经典面试题-环形链表 II
经典面试题-环形链表 II前言142. 环形链表 II问题描述方法一方法二总结前言这是一道经典的面试题来源于力扣142. 环形链表 II142. 环形链表 II问题描述 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:p原创 2022-01-01 22:05:06 · 1031 阅读 · 4 评论 -
2021跨年夜让我们来做一道经典面试题-环型链表
环型链表前言方法一方法二总结前言这是一道经典的面试题来源于力扣141. 环形链表# 一、环型链表## 问题给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true原创 2021-12-31 23:41:16 · 179 阅读 · 2 评论 -
经典面试题—反转链表、求链表中间结点、回文链表、重排链表
经典面试题—反转链表、求链表中间结点、回文链表、重排链表原创 2021-12-29 11:47:05 · 702 阅读 · 15 评论 -
经典面试题—合并两个有序数组(力扣88、面试题 10.01)
经典面试题—合并两个有序数组(力扣88、面试题 10.01)前言一、合并两个有序数组88. 合并两个有序数组面试题 10.01. 合并排序的数组解题方法一:双指针,需要额外空间方法二:先合并后排序,空间复杂度o(1)方法三 逆向双指针二、1669. 合并两个链表解题:总结前言继续接上章,介绍两个有序表的合并-数组篇:88. 合并两个有序数组、面试题 10.01. 合并排序的数组,以及补充1669. 合并两个链表一、合并两个有序数组88. 合并两个有序数组给你两个按 非递减顺序 排列的整数数原创 2021-12-27 23:57:52 · 855 阅读 · 1 评论 -
有序表(链表)的合并(结合力扣21题/剑指offer25题-合并两个有序链表)
有序表的合并前言一、题目描述二、解法1:迭代解法三、解法二:递归总结前言小白可以先看王卓老师-有序表合并然后去力扣21题或剑指offer25题实践一、题目描述21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2原创 2021-12-26 23:58:51 · 832 阅读 · 5 评论 -
数据结构-第二章(6)-单链表基本操作的实现
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现⚡️数据结构-第二章(3)-顺序表(含代码)⚡️数据结构-第二章(4)-顺序表案例(含代码)数据结构-第二章(6)-单链表基本操作的实现数据结构带头节点的单链表单链表的存储结构单链表的初始化和判空单链表的销毁和清空单链表求链表的表长单链表-取值按值查找(位置)返回存储地址返回位置序号单链表-插入数据元素删除节点单链表的建立头插法尾插法总结带头节点的单链表原创 2021-12-25 23:05:10 · 1328 阅读 · 2 评论 -
数据结构-第二章(5)-链式存储结构
链式存储结构原创 2021-11-26 22:21:00 · 3340 阅读 · 4 评论 -
数据结构-第二章(4)-顺序表案例(含代码)
数据结构⚡️数据结构-第一章⚡️抽象数据类型案例⚡️数据结构-第二章(1)-线性结构⚡️数据结构-第二章(2)-线性表的顺序表示和实现数据结构-第二章(3)-顺序表案例(含代码)数据结构一、线性表的结总结一、线性表的结线性表的小结查找、插入、删除的平均算法复杂度为O(n)空间复杂度显然顺序表操作没有占用辅助空间算法的空间复杂度O(1)线性表的优缺点优点存储密度大(结点本身所占用的空间/结点结构所占存储量=1)无需为表示表中元素之间的逻辑关系,而增加额外的存储空间可以随机存取表原创 2021-11-23 14:18:45 · 2033 阅读 · 0 评论 -
数据结构-第二章(3)-顺序表(含代码)
数据结构数据结构-第一章抽象数据类型案例数据结构-第二章(1)-线性结构数据结构-第二章(2)-线性表的顺序表示和实现数据结构一、前言二、顺序表的基本操作总结一、前言二、顺序表的基本操作顺序表示意图第一步:创建顺序表结构类型静态分配动态分配第二步:线性表初始化C++不支持默认的int,所以在初始化赋值时,使其返回类型为空。//1、顺序表的初始化赋值void InitList(SqList &L){ int原创 2021-11-22 22:16:45 · 1110 阅读 · 2 评论 -
数据结构-第二章(2)-线性表的顺序表示和实现
数据结构数据结构-第一章数据结构-第二章(2)-线性结构数据结构前言一、线性表1.1 线性表的定义和特点1.2 线性表案例1.3 线性表的类型定义总结前言一、线性表1.1 线性表的定义和特点线性表(Liner List):由n(n>=0)个数据元素(节点)a1,a2,a3…an组成的有限序列。其中数据元素的个数n定义为表的长度当n=0时称为空表将非空的线性表(n>0)记住:(a1,a2,…an)这里的数据元素ai(1<=i<=n)只是一个抽象符合,其具原创 2021-11-19 10:20:14 · 1504 阅读 · 4 评论 -
数据结构-第二章(1)-线性结构
数据结构数据结构-第一章数据结构-第二章(1)-线性结构数据结构前言一、线性表1.1 线性表的定义和特点1.2 线性表案例1.3 线性表的类型定义总结前言一、线性表1.1 线性表的定义和特点线性表(Liner List):由n(n>=0)个数据元素(节点)a1,a2,a3…an组成的有限序列。其中数据元素的个数n定义为表的长度当n=0时称为空表将非空的线性表(n>0)记住:(a1,a2,…an)这里的数据元素ai(1<=i<=n)只是一个抽象符合,其具原创 2021-11-17 11:48:20 · 3130 阅读 · 9 评论 -
抽象数据类型案例
数据结构数据结构-第一章数据结构-第一章-抽象数据类型案例数据结构前言一、介绍二、c++实现总结前言一、介绍抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作。其定义取决于它的一组逻辑特性,而其在计算机内部如何表示和实现无关,意思就是不论其内部结构如何变化,只要其数学特性不变,都不影响其外部的使用。抽象数据类型定义举例:抽象数据类型 (ADT)定义举例:Circle的定义ADT 抽象数据类型名{ Data 数据对象的定义 数据元素之间的逻原创 2021-11-16 22:58:04 · 9123 阅读 · 10 评论 -
数据结构第一章考点
数据结构数据结构-第一章考点数据结构前言一、时间复杂度1.1 时间复杂度计算的两种规则二、空间复杂度三、递归(拓展)3.1 递归算法的特性总结前言一、时间复杂度 时间复杂度一般单独命题或结合算法题。 时间复杂度T(n)是指算法中所有语句的频度(执行次数)之和。人们关心的是当n趋于无穷时T (n)的数量级,而非T (n)的准确大小,因此以T (n)的数量级来表征时间复杂度。 eg:T(n)=n3+n2+n,可认为时间复杂度Tn)=0(n),这里数量级最大的一项必定是由最深层循环的语原创 2021-07-15 00:01:19 · 605 阅读 · 8 评论 -
数据结构-第一章
数据结构数据结构-第一章数据结构前言一、介绍二、基础概念和术语2.1 数据2.2 数据结构2.3 数据元素2.4 数据元素之间的关系2.5 数据类型三、算法和算法分析3.1 算法3.2 算法设计的要求3.3 算法效率的度量3.3.1 时间复杂度3.3.2 空间复杂度总结前言一、介绍计算机解决一个具体问题时,大致需要三个步骤: 1.要从具体问题抽象出一个适当的数学模型。 2.设计一个解此数学模型的算法。 3.编写程序,进行调试、调整然后到最终解答。二、基础概念和术语2.1 数原创 2021-07-03 15:50:33 · 741 阅读 · 4 评论