数据结构
文章平均质量分 87
我还是学习吧
这个作者很懒,什么都没留下…
展开
-
数据结构:八大排序——直接插入、希尔、选择、堆、冒泡、快速、归并、计数排序
文章目录常见排序及分类直接插入排序希尔排序常见排序及分类这里暂时先只总结直接插入排序希尔排序选择排序堆排序冒泡排序快速排序二路归并排序计数排序直接插入排序动图演示:分析:直接插入最坏为O(N^2)最好可以达到O(N)void InserSort(int* a, int n){ for(int i = 0; i < n - 1; ++i) { int end = i; int x = a[end+1]; while(end >= 0 )原创 2021-11-27 19:10:45 · 5909 阅读 · 11 评论 -
数据结构:顺序存储的二叉树,堆及堆的两个应用,堆排序和TopK问题
文章目录二叉树的顺序存储堆的概念堆的实现堆结构定义堆初始化堆的销毁堆的插入堆中元素个数堆的判空堆的删除以及取堆顶元素堆的构建堆的应用TopK问题堆排序二叉树的顺序存储顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费,所以现实中使用中只有堆才会使用数组来存储。二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树。图示:堆的概念堆就是一种特殊的完全二叉树,特点是节点的值有如下关系:父亲大于等于孩子——大堆父亲小于等于孩子——小堆堆一般都用数原创 2021-11-21 15:27:02 · 901 阅读 · 1 评论 -
数据结构:树的概念介绍及几种表示方法,以及二叉树介绍和二叉树的性质
文章目录树的概念树的表示方法(代码实现结构定义)二叉树概念满二叉树完全二叉树二叉树的一些性质树的概念有别于之前学的顺序表、链表、栈、队列等线性结构,树是一种非线性结构。树是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树有一个特殊的结点,称为根结点,根节点没有前驱结点;除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i <= m)又是一原创 2021-11-21 10:04:10 · 618 阅读 · 0 评论 -
数据结构:二叉树的链式结构及对链式二叉树的一些基本操作
文章目录二叉树的实现之链式结构二叉树的节点个数二叉树叶子节点的个数二叉树第K层节点的个数二叉树的深度/高度二叉树查找值为x的节点判断二叉树是否是完全二叉树二叉树销毁二叉树的遍历前序遍历、中序遍历、后序遍历、层序遍历、广度优先遍历、深度优先遍历本文总结课上讲到的链式二叉树的一些基本操作,具体有计算二叉树的结点的个数计算二叉树叶子节点的个数计算二叉树第K层结点的个数计算二叉树的深度/高度查找并返回值为x的结点判断二叉树是否是完全二叉树二叉树的销毁二叉树的前、中、后序遍历二叉树的层序遍历原创 2021-11-20 19:58:42 · 1058 阅读 · 0 评论 -
数据结构线性表——栈和队列
文章目录栈的概念栈的实现栈的概念栈是一种特殊的线性表,只允许在固定的一段进行插入删除操作。进行数据插入删除的一端叫做栈顶,另一端叫做栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈的实现可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。...原创 2021-11-09 15:00:16 · 118 阅读 · 0 评论 -
数据结构顺序表——双向带头循环链表
文章目录双向循环链表结构定义创建链表并初始化开辟新节点打印双向链表双向链表尾插双向链表尾删双向链表头插双向链表头删双向链表查找在pos前一个位置插入删除pos节点销毁链表复用ListInsert实现头插尾插复用LsitErase实现头删尾删总结双向带头循环链表结构如图双向循环链表结构定义typedef int LTDataType;typedef struct ListNode{ LTDataType data; struct ListNode* prev; struct ListNode原创 2021-11-05 20:34:05 · 127 阅读 · 0 评论 -
数据结构顺序表——单向无头链表
文章目录链表概念单链表结构定义申请节点单链表打印单链表尾插单链表头插单链表尾删单链表头删单链表查找在pos后一个位置插入一个节点在pos前面一个位置插入一个节点删除pos节点删除pos后一个节点销毁链表总结链表概念概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。链表也是顺序表的一种。主要和数组顺序表对比。链表有单向、双向;带头、不带头;循环、不循环几种,可以有8种组合:实际中最常用的两种结构是单向无头链表和双向带头循环链表这两种结构原创 2021-11-05 18:24:50 · 167 阅读 · 0 评论 -
数据结构线性表——顺序表
文章目录线性表概念顺序表概念顺序表初始化顺序表打印顺序表销毁顺序表增容顺序表尾插顺序表尾删顺序表头插顺序表头删顺序表元素查找顺序表指定位置插入(中间位置插入)顺序表指定位置删除(中间位置删除)复用SeqLsitInsert实现头插尾插复用SeqLsitErase实现头删尾删总结线性表概念定义:线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表在逻辑上是线性结构。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。常见的线性表:顺序表、链原创 2021-11-05 16:18:28 · 94 阅读 · 0 评论