简单数据结构
文章平均质量分 68
风住尘香花已尽0.0
继续加油!
展开
-
八大排序算法原理及复杂度分析----用C实现
快排,希尔排序,计数排序等常见排序算法原创 2022-05-05 14:29:33 · 258 阅读 · 4 评论 -
快速排序几种实现方法及其优化
快速排序“hoare” 快速排序思想每次找到一个target位置,一般将target设到第一个位置,然后用left和right两个指针进行搜索,right找比target值小的数值,left找比target值大的数值,然后两者交换。当left和right相交时将target交换到此位置,这样可以保证target的左边都比其值小,右边都比其值大。由于right找的是比target值小的数值,所以每次让right先走,第一种情况是right找到了比其小的,然后left没找到位置就和right相遇了,此时r原创 2022-04-20 16:47:51 · 545 阅读 · 4 评论 -
二叉树基本操作实现
链式二叉树数组表示二叉树要求二叉树必须是完全二叉树或者是满二叉树,所以二叉树还可以用链式表示其结构代码如下:typedef int DataType;typedef struct BinaryTree{ struct BinaryTree* _left; struct BinaryTree* _right; DataType data;};BTNode前序遍历前序遍历的顺序为根,左子树,右子树,所以也被称为先根遍历。如图以这个二叉树为例:这原创 2022-04-16 15:51:57 · 3580 阅读 · 2 评论 -
堆排序--TOP-K问题解决及复杂度分析
堆排序算法实现,TOP-K问题解决代码及复杂度分析。原创 2022-04-09 17:06:59 · 1716 阅读 · 2 评论 -
数据结构--堆及堆排序的代码实现
堆堆是一个按照完全二叉树顺序存储方式在一个二维数组中的数据结构,其性质为堆中的某个结点总是不大于或不小于父节点的值堆是一个完全二叉树每个结点大于父节点的叫最小堆,每个结点小于父节点的叫最大堆这就是一个最小堆,因为其父节点都小于对应的子节点。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yQ5B5vtT-1649232454623)(E:/mds/images/最小堆.png)]比如说1小于5 和7,5小于6和9…堆的根节点总是放置最小或原创 2022-04-06 16:11:43 · 905 阅读 · 0 评论 -
数据结构--树及二叉树的性质
树树是一种非线性的数据结构,由n(n>=0)个有限结点组成的一个具有层次关系的集合。树相关概念:结点的度:结点含有子树的个数称为结点的度;A的度为4。叶子节点:度为0的结点;如G、H、I等。父结点:一个结点若有子结点,则这个结点就是其子结点的父亲结点;如E为H和I的父亲结点。子结点:一个节点含有子树的结点称为该结点的子节点;如G为D的子结点。根结点:它是同一棵树中除本身外所有结点的祖先,没有父结点;如A。兄弟结点:具有相同父结点的结点互称为兄弟结点;如H和I。树的度:一棵树中,最大原创 2022-04-01 15:24:31 · 1054 阅读 · 0 评论 -
数据结构--队列及循环队列实现
队列:队列和栈一样也是一种表,但是他与栈不同的是在一段插入数据,在另一端删除数据。队列基本操作是入队(enqueue),它是在表的队尾(rear)插入元素,以及出队*(dequeue),它是在队头(front)删除或返回一个元素。队列和栈一样都可以用任何表来实现,本文选择用数组实现队列。队列结构:typedef int DataType;typedef struct QueueNode { DataType data; struct QueueNode* next;}QNode;t原创 2022-03-30 15:39:51 · 1660 阅读 · 1 评论 -
数据结构--用数组实现栈
栈栈是一个带有限制性的表,它只能在栈顶插入和删除,栈最基本的操作就是push(入栈)和pop(出栈),栈又叫做LIFO表(Last in,First out list)。由于栈是表结构,所以可以用数组或者链表实现其结构。栈的数组实现栈的结构:typedef int DataType;typedef struct Stack { DataType* a;//定义一个数组来存储数据 int top;//记录栈顶位置 int capacity;//控制栈的大小}ST;栈的基本操作声明:原创 2022-03-29 16:57:58 · 2473 阅读 · 0 评论 -
顺序表--链表实现
链表链表是一种在物理存储上无规则的存储结构,由指针将每个数据元素来串联起来。链表可以从单向双向、带头不带头、循环非循环来进行分类,最常用的是无头单向非循环链表和带头双向链表。无头单向链表:结构简单实现容易,但是一般不会用来存储数据,更多的是用来实现一些其他数据结构的子结构,如哈希桶、邻接表等。带头双向循环链表:结构复杂,一般用来存储数据,其数据结构带来许多操作的优势。单向链表结构定义:typedef int SLTypeData;typedef struct SListNode {原创 2022-03-24 11:06:44 · 531 阅读 · 0 评论 -
数据结构--顺序表--线性表的实现
线性表的C语言实现原创 2022-03-23 15:40:08 · 1674 阅读 · 0 评论