数据结构笔记
文章平均质量分 70
C/C++实现数据结构
影中人lx
经管跑路人
展开
-
【数据结构】跳表Skiplist
跳表原理,实现和与哈希表平衡树的比较原创 2022-12-12 12:06:13 · 1180 阅读 · 0 评论 -
【数据结构】图算法和LRUCache
图的最小生成树、最短路径算法和LRUCache实现原创 2022-12-07 21:07:45 · 538 阅读 · 0 评论 -
【数据结构】图的实现
图的实现和遍历原创 2022-12-01 17:16:50 · 1512 阅读 · 0 评论 -
【数据结构】并查集
并查集实现原创 2022-10-21 21:50:02 · 1112 阅读 · 0 评论 -
【算法】模拟退火
模拟退火原创 2022-09-09 09:38:05 · 5963 阅读 · 0 评论 -
【数据结构】二叉搜索树
二叉搜索树的实现原创 2022-07-26 16:52:59 · 212 阅读 · 1 评论 -
【数据结构】——八大排序
文章目录1.插入排序2.冒泡排序3.希尔排序4.选择排序5.快速排序快排优化递归改非递归6.堆排序7.归并排序递归归并排序改成非递归8.计数排序9.题目总结:排序的时间检验1.插入排序void InsertSort(int* a, int n){ //i的最大下标为n-2, for(int i=0;i<n-1;i++) { //下标为end+1的元素是每次循环需要排序的元素 int end=i; int tmp=a[end+1];原创 2022-04-21 16:16:53 · 4259 阅读 · 3 评论 -
插入、冒泡、希尔、选择、递归快速、堆排序
文章目录1.插入排序2.冒泡排序3.希尔排序4.选择排序5.快速排序6.堆排序1.插入排序void InsertSort(int* a, int n){ //i的最大下标为n-2, for(int i=0;i<n-1;i++) { //下标为end+1的元素是每次循环需要排序的元素 int end=i; int tmp=a[end+1]; while(end>=0) { if(tmp<原创 2022-04-16 22:13:36 · 763 阅读 · 0 评论 -
二叉树的链式结构和遍历
文章目录1.树的遍历1.1.前序遍历(先根遍历)1.2.中序遍历(中根遍历)1.3.后序遍历(后根遍历)1.4.层序遍历1.5.二叉树的常见问题2.二叉树的练习题普通二叉树增删查改没有价值,如果是为了单纯的存储数据,不如用线性表只是为了更好的控制他的结构,为后续学习更复杂的搜索二叉树打基础typedef int BTDatatype;typedef struct BinaryTreeNode{ BTDataType data; struct BinaryTreeNode* l原创 2022-04-15 23:10:28 · 629 阅读 · 0 评论 -
剑指offer——day8【二叉树的回溯】
题目1:树的子结构思路解法:递归1、判断A、B是否为空,有一者为空,返回false;只有两者都不为空才能进入下一步2、前序遍历判断A的当前节点与B:dfs(A, B)、A的左子树与B:isSubStructure(A->left, B)、A的右子树与B:isSubStructure(A->right, B),是否满足条件有其一满足条件即可class Solution: def isSubStructure(self, A: TreeNode, B: TreeNode.原创 2022-04-11 14:16:22 · 181 阅读 · 0 评论 -
剑指offer——day6【二叉树的回溯算法】
题目1题目链接//借助队列实现BFS#define MAX_NUM 1001int* levelOrder(struct TreeNode* root, int* returnSize){ *returnSize=0; if(root==NULL) return NULL; int*ans=(int*)malloc(sizeof(int)*MAX_NUM); //队列 struct TreeNode*tree[MAX_NUM]; m.原创 2022-04-11 09:07:56 · 1490 阅读 · 0 评论 -
剑指offer——day2
题目一思路:两次遍历。一次遍历出链表的元素个数。第二次依次插入数据int* reversePrint(struct ListNode* head, int* returnSize){ int i=0; struct ListNode*cur=head; while(head) { head=head->next; i++; } *returnSize=i; int*res=(int*)malloc(siz原创 2022-04-09 01:52:43 · 179 阅读 · 0 评论 -
堆实现,堆排序和TopK问题
文章目录@[toc]一.二叉树的存储结构1.顺序存储2.链式存储二、堆的概念和结构三、堆的实现堆的头文件四、测试堆和二叉树堆的实现堆的应用image-20220408150923880一.二叉树的存储结构二叉树一般可以使用两种结构存储,一种顺序结构,一种是链式结构1.顺序存储顺序结构存储就是使用数组来存储,一般只适用于完全二叉树,因为不是完全二叉树会有空间上的浪费。而现实中使用中只有堆才使用数组来存储。二叉树的顺序存储在物理上是一个数组,在逻辑上是一棵二叉树。顺序结构适用于完全二叉树2..原创 2022-04-08 15:22:10 · 1161 阅读 · 0 评论 -
二叉树基础
文章目录一、树的基础1.树的概念2.非树3.树的相关概念![image-20220402143804166](https://img-blog.csdnimg.cn/img_convert/a8bbb6f8483be3ca9edd9e3544136f75.png)4.树的表示二、二叉树1.概念2.特殊的二叉树3.二叉树的性质4.经典题目一、树的基础1.树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合,这种结构看起来像一颗倒挂的树。有一个特殊的结点,原创 2022-04-02 17:51:39 · 144 阅读 · 1 评论 -
数据结构---栈与队列
今天是高木同学哦~~~原创 2022-03-08 22:36:34 · 922 阅读 · 0 评论 -
带头双向循环链表
链表单向链表的缺陷单链表的缺陷:1.查找的速度慢2.不能从后往前找3.找不到前驱双链表的优势:把链表的删除和插入的时间复杂度从o(n)变成了o(1)链表的结构两两组合,一共有8种链表带头双向循环链表的宏定义typedef int LTDataTypetypedef struct ListNode{ struct ListNode* next; struct ListNode* prve; LTDataType data;}ListNode;带哨兵位的双.原创 2022-02-22 21:53:13 · 357 阅读 · 0 评论 -
数据结构:顺序表
顺序表顺序表可以分为:1.静态顺序表:用定长数组创建2.动态顺序表:使用动态开辟的数组存储;(创建在堆);特点:1.连续的物理空间2.数据必须是从头开始,依次存储。1.静态顺序表1.1.宏定义和结构定义、#define MAX_SIZE 10typedef int SQDataType; //定义出顺序表存储的数据类型typedef struct SeqList{ SQDataType a[MAX_SIZE]; //SQDataType表示数据类型原创 2022-01-28 18:12:10 · 1496 阅读 · 0 评论 -
[数据结构] ->单链表
顺序表的缺陷:1.如果空间不够,增容。增容会付出一定性能销毁,其次可能存在一定的空间浪费。(开辟的空间可能没有完全利用完)2.顺序表在物理空间上是连续的,导致了内存的利用效率不高。3.头部或者中部左右的插入删除效率低->o(n);链表的特点:空间上,按需给空间。不要求物理空间连续,头部和中间插入,不需要挪动数据。概率:链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。缺点:存储数据方便,但是访问数据时复杂单链表1.原创 2022-01-29 23:37:26 · 806 阅读 · 1 评论