
数据结构
文章平均质量分 96
beyond->myself
菜鸡一枚,记录学习!
展开
-
【算法】链表经典OJ
题目链接203. 移除链表元素 - 力扣(LeetCode)题目描述给你一个链表的头节点 和一个整数 ,请你删除链表中所有满足 的节点,并返回 新的头节点 。思路遍历链表,对比每一个节点的数据与val是否相等,如果相等,就free该节点。时间复杂度:O(N) 空间复杂度:O(1)易错点1、当链表的头结点的数据等于val时,我们free掉该节点后需要挪动head指针,让其指向新的头结点2、我们在遍历链表的时候需要记录前一个节点的地址,因为当我们free掉当前节点之后,我们要让前一个节点的next原创 2022-08-26 17:20:06 · 697 阅读 · 56 评论 -
【算法】顺序表力扣OJ
每次循环 fast 都会做判断,判断 fast 当前数字是否等于 fast 后面那个数,把不重复的数赋值给slow,然后 slow,fast 全部自增,如果当前 fast 的数等于 fast 后面的数,(因为数组是有序的所以只用判断fast后面的数,而不是与 slow 判断)就只让 fast 自增,直到 fast 找到不等于 fast 后面的数,再次让fast的数赋值 slow,当 fast 的数超出数组长度,返回slow 当前数字,就是不重复的数组长度。循环遍历,挪动数组的数据到新空间。......原创 2022-08-12 23:41:20 · 357 阅读 · 18 评论 -
【数据结构】八大排序
超详解八大排序之插入排序、希尔排序、堆排序、冒泡排序、快速排序、选择排序、归并排序、计数排序原创 2022-10-07 23:57:57 · 4312 阅读 · 63 评论 -
【数据结构】二叉树
涵盖了二叉树的基本知识,入股不亏欧原创 2022-09-29 17:32:39 · 1993 阅读 · 52 评论 -
【数据结构】堆排序、TopK问题(堆的应用)
既然最近学习了堆,堆的一个重要应用就是进行堆排序,这里提一下:堆排序即快排的一种。在后面的学习中,我们会学习很多排序方法。堆排序,堆排序即利用堆的思想来进行排序。假如我们有一串乱序数组,如下:现在想要对它进行排序,应该怎么做呢?原创 2022-09-27 14:55:11 · 802 阅读 · 48 评论 -
【数据结构】二叉树——堆
由于是堆的元素按完全二叉树的顺序存储方式存储在一位数组中的,所以堆的结构和顺序表的结构一样。# define DEF_SIZE 4 //初始的容量 # define CRE_SIZE 2 //一次增容的倍数 typedef int HPDataType;int size;} HP;4# define DEF_SIZE 4 //初始的容量 # define CRE_SIZE 2 //一次增容的倍数 typedef int HPDataType;int size;} HP;2。原创 2022-09-23 23:05:52 · 343 阅读 · 13 评论 -
【数据结构】栈和队列
define DEF_SIZE 4 //初始的容量 # define CRE_SIZE 2 //一次增容的倍数 //#define N 4 typedef int STDataType;////静态栈 //typedef struct Stack //{ // STDataType data[N];//定长数组 // int top;//}ST;//动态栈 typedef struct Stack {//指向动态开辟的数组 int top;//记录栈顶位置 int capacity;原创 2022-08-23 21:38:32 · 511 阅读 · 21 评论 -
【数据结构】带头双向循环链表
在上一节中我们学习了单链表,但是我们发现单链表有如下缺陷:在尾部插入、删除数据时间复杂度为O(N),效率低;在pos位置前插入、删除数据时间复杂度为O(N),效率低;进行插入、删除数据时因为有可能改变头节点,所以需要传递二级指针,不好理解;基于单链表的这些缺陷,我们设计出了带头双向循环链表,带头循环实现链表能够完美的解决顺序表所存在的缺陷。在单链表部分我们已经介绍了链表的几种结构:带头/不带头 – 是否具有哨兵位头结点,该节点不用于存储有效数据,对链表进行插入删除操作时也不会影响该节点;原创 2022-08-21 20:54:51 · 772 阅读 · 30 评论 -
【数据结构】单链表
在上一节中我们提出了顺序表的缺陷,为了解决这些问题,我们设计出了链表。与顺序表一样,单链表也需要一个变量data来记录数据,并且我们应该对data的类型重命名,让我们的链表可以管理不同类型的数据;其次,由于单链表中需要存储下一个节点的地址,所以我们应该有一个指向结构体的指针。error //typedef定义的LSTNode在定义完之后才起作用 } LSTNode;单链表这里就结束了,但是单链表是一个非常重要的知识,有很多经典的算法OJ题,以后会在【算法】栏目逐渐更新。......原创 2022-08-17 22:27:22 · 591 阅读 · 33 评论 -
【数据结构】顺序表
线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。通俗的说,顺序表就是数组,但是顺序表要求数组里面的元素必须连续存储。# define DEF_SIZE 4 //初始的容量 # define CRE_SIZE 2 //每次增容的倍数 typedef int SLDataType;...原创 2022-08-13 20:58:07 · 1112 阅读 · 31 评论