C/C++数据结构和算法
C/C++数据结构和算法
代码黑洞_
好记性不如烂笔头
展开
-
C语言-排序算法
理解排序在排序算法中关键步骤涉及到元素的比较和交换,让无序的数据元素按照规定排列成有序的数据过程。内排序——涉及数据量少,整个排序过程不需要外存便能完成。外排序——涉及数据量大,不能一次性读取到内存中,需要时从外部一部分一部分调用。时间性能——关键性能差异体现在比较和交换的数量。辅助存储空间——在考虑排序的性能时,必要时可以“空间换时间”。算法的复杂度——排序算法的复杂度影...原创 2020-04-13 17:34:04 · 270 阅读 · 0 评论 -
二叉树
二叉树理解n(n>=0)个结点的有限集合,由一个根结点和两个互不相交的子结点,左子树和右子树组成的树形结构。 二叉树的性质在二叉树的第i层上至多有2^(i-1)个结点(i>0) 如上图第3层有 结点数:2^(3-1) = 4 具有n个结点的完全二叉树的深度必为log₂n+1 如上图有结点7个 深度:log₂7+1 =...原创 2020-04-10 14:56:47 · 1218 阅读 · 0 评论 -
C语言-队列queue顺序存储和链式存储
理解队列队列是一种特殊的先进先出的线性表,队列的操作只能在队头和队尾操作,即队尾插入数据,队头取数据。 队列的顺序存储队列的顺序存储类似线性表的顺序存储//SeqQueue.h#pragma oncetypedef void SeqQueue;//创建队列SeqQueue* SeqQueue_Create(int capacity...原创 2020-04-03 14:14:01 · 345 阅读 · 0 评论 -
C语言-栈tack顺序存储和链式存储
理解栈tack栈也是一种特殊的线性表,栈的工作原理是先进后出,因此在对栈操作时只能在栈顶操作。栈的插入操作,叫作入栈(压栈),栈的删除操作,叫作出栈(弹栈)。 栈的顺序存储选择尾部压栈和弹栈时,不会涉及到数组元素的大量移动。 栈的链式存储选择在链表头部入栈和出栈时,减少了数组元素的大量移动注意:在栈的...原创 2020-04-03 11:37:48 · 265 阅读 · 0 评论 -
C语言-双向链表
理解双向链表和单链表类似,单链表是结点只包含了指向下一个结点的后继指针域,而双向链表的结点增加了一个指向前驱的指针域。这样以来方便从某一结点开始,方便访问前一个结点和后一个结点。 双向链表的插入分析一般插入: 添加辅助指针current和next。current的后继指针指向插入结点node...原创 2020-04-03 10:16:48 · 342 阅读 · 0 评论 -
C语言-线性表链式存储(循环链表)
理解循环链表单链表和循环链表的区别在于,尾部结点的后继指针是否指向头部结点。相对于其他功能基本相似。循环链表的插入分析普通插入:例如pos = 2,和单链表是一样的尾插法:辅助指针向后跳lenght次,指向链表最后元素,单链表支持尾插法头插法:插入第一个元素时,当链表中有其他元素时插入头部时插入第一个元素时当链表中有其他元素时插入头部时...原创 2020-04-02 14:37:38 · 270 阅读 · 0 评论 -
C语言-线性表链式存储(单链表)
理解链式存储为了表示数据元素与直接后继数据元素的关系,每个数据元素除了保存自己的信息之外,还需要存储直接后继的信息。那么我们应该怎么做呢?首先我们应该在每个数据结点中包含一个指针域(存储直接后继结点的头部地址)。 头部结点:链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息数据结点:链表中的数组元素结点,包含...原创 2020-04-01 16:12:22 · 327 阅读 · 0 评论 -
C语言-线性表的顺序存储结构
线性表线性表是0个或多个类型相同的数据元素的集合,这些元素是有限的顺序存储的。一个线性表有哪些具体的操作,在程序中的表现为一组函数创建线性表销毁线性表清空线性表将元素插入线性表将元素从线性表中删除获取线性表中某个位置的元素获取线性表的长度原创 2020-03-02 22:33:56 · 678 阅读 · 0 评论