数据结构

栈的基本操作及C语言代码实现

1.栈的基本操作—出栈如图:出栈(pop)操作,是在栈不为空的情况下(注意一定要进行判空操作),将栈顶的元素删除,同时top指针,next向下进行移动即可的操作。其代码可以表示为://出栈popLink_Stack*Pop_stack(Link_Stack*p){Node*temp;temp=p->t

C++中string字符串类型介绍

1.简介C语言中通过字符相连已经基本创造出了字符串的常规操作,然而,字符串在C语言中并不是常规类型,而是一个类似于数组的结构,在C++中,通过模板类的操作创建了string类,这样的方法更适合于现代的操作编程。2.头文件&命名空间#include<string>//头文件注意不是<string.h>也

理解复杂度概念

1.时间空间复杂度定义1)时间复杂度时间复杂度表示一个程序运行所需要的时间,其具体需要在机器环境中才能得到具体的值,但我们一般并不需要得到详细的值,只是需要比较快慢的区别即可,为此,我们需要引入时间频度(语句频度)的概念。时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。

什么是“并查集” ?

什么是“并查集”?并查集,是一种可以使用代表元来表示不相交集的数据结构,在一些只需要查询两个元素是否属于同一个集合的情况下它很有用。比如给定一个无向图,判断两个顶点是否属于同一个连通分量。在很多算法里面都会用到它,比如Kruskal最小生成树算法。

归并排序算法实例详解

1.复杂度与稳定性算法时间复杂度最坏情况O(NlogN)最好情况O(NlogN)平均情况O(NlogN)空间复杂度O(N)注:归并排序需要创建一个与原数组相同长度的数组来辅助排序稳定性:稳定排序2.过程介绍归并排序的核心思想是将两个有序的数列合并成一个大的有序的序列。

单链表的基本操作及C语言代码实现

(续接前文)1.遍历单链表(打印,修改)便利的概念想必大家都不会陌生,即就是从链表的头开始,逐步向后进行每一个元素的访问,这就是遍历,对于遍历操作,我们可以衍生出很多常用的数据操作,比如说查询元素,修改元素,获取元素个数,打印整个链表数据等等。

图的遍历BFS广度优先搜索

1.简介BFS(BreadthFirstSearch,广度优先搜索,又名宽度优先搜索),与深度优先算法在一个结点“死磕到底“的思维不同,广度优先算法关注的重点在于每一层的结点进行的下一层的访问。2.BFS算法介绍BFS算法和核心思路就是:从某个点一直把其邻接点走完,

二叉树及分类介绍

1.二叉树简介二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。如图如图,每一个结点中最多拥有一个左结点和一个右结点,并没有多余的结点,这是很明显的二叉树的特征2.二叉树的特点由二叉树定义以及图示分析得出二叉

循环队列的基本操作及C语言代码实现

1.循环队列的初始化我们初始化相比链表而言更为简单了,核心就在于申请空间以及将front指针和rear指针内容赋值为0,即指向第0个元素即可(注意第0个元素内容为空)。其代码可以表示为://初始化cir_queue*init(){cir_queue*q=(cir_queue*)malloc(sizeo

哈夫曼树编码与查找算法(C语言实现)

1.哈夫曼树的查找算法查找算法根据构建哈夫曼树算法衍生而来,我们在构建二叉树时需要查找出哪些数据最小,以符合我们哈夫曼树的最优解情况。查找权重值最小的两个结点的思想是:从待处理数据的头部位置开始,首先找到两个无父结点的结点(说明还未使用其构建成树),