数据结构
文章平均质量分 75
奋斗的龙猫
努力让自己变强,未来才有更多选择,才有足够资本守护身边人。
展开
-
数据结构之图总结
文章目录图的构建邻接矩阵邻接表图的遍历深度优先搜索广度优先搜索图的构建邻接矩阵假设含有n个顶点,那么为了表示各个顶点之间是否连通的关系,我们定义一个二维数组,表示这n个顶点之间是否连通。其中,定义这个二维数组的时候,我们需要将这个二维数组进行初始化,然后才可以输入相连的顶点。这时候,如果构建的时候一个无向图,那么我们可以将这个二维数组初始化为0,表示顶点并没有连通,否则,如果对应的值不是0,说明这两个顶点是相连的。构建有向图的时候这时候二维数组的值表示两个顶点之间的距离,我们将二维数组的值可以初始原创 2021-05-18 20:45:05 · 377 阅读 · 3 评论 -
快速排序总结
快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个分界值(这个分界值用枢纽来表示,pivot),通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边原创 2021-05-12 22:35:54 · 936 阅读 · 0 评论 -
散列表(哈希表)总结(C语言)
散列表原创 2021-05-04 11:57:02 · 3544 阅读 · 11 评论 -
LeetCode练习: 两个队列实现栈
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和原创 2021-04-29 22:06:42 · 835 阅读 · 0 评论 -
哈夫曼树(C语言)
/*1、定义一个结构体,表示一个节点。其中,这个结构体有4个成员变量,分别表示是这个节点的权值,父节点及左右子节点的下标2、定义一个整形数组,用于存放各个节点的权值3、定义一个整形数组,用于存放哈夫曼编码,当然也可以定义一个整形数组来存放哈夫曼编码构建哈夫曼树:1、给这个哈夫曼树创建一个结构体数组,其中分配的空间是2 * n - 1,因为我们都知道哈夫曼树的性质有一个是:给定n个叶子节点,那么由这n个叶子节点构成的哈夫曼树一共含有2 * n - 1个节点2、前面n个用于存放n个叶子原创 2021-04-28 20:35:08 · 4841 阅读 · 11 评论 -
二叉树的之字形遍历
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{3,9,20,15,7,#,#},该二叉树之字形层序遍历的结果是320 915 7输入格式一行字符串,只包含大写字母和#。此处采用完全二叉树的顺序存储结构。输出格式若干行,之字形输出树的结点,每一行输出树的一层。输入样例ABC###D##输出样例AC BD基本思路:1、通过观察题意,我们可以发现,这个题目构造二叉树的时候可以通过完全二叉树的顺序存储结构进原创 2021-04-24 21:22:48 · 2619 阅读 · 0 评论 -
二叉搜索树的完整总结(C语言)
文章目录1、 二叉树的构建2、二叉树的遍历前序遍历递归实现迭代实现中序遍历递归实现迭代实现后序遍历递归实现迭代实现层序遍历4、二叉树的高度5、二叉树的删除6、由几种遍历序列还原二叉树前序序列、中序序列还原二叉树:中序序列、后序序列还原二叉树:1、 二叉树的构建我们都知道二叉搜索树的特点是:当前节点的值大于它的左子树的值,小于等于右子树的值。所以我们这里可以通过迭代的方式构建二叉搜索树,当然也可以通过递归的方式构建二叉树。定义一个结构体,表示节点:typedef struct NODE{ in原创 2021-04-19 20:05:45 · 1387 阅读 · 4 评论 -
队列的应用--银行客户的平均排队问题
某银行有一个客户办理业务站,在一天内随机地有客户到达,设每位客户的业务办理时间是某个范围内的值。设只有一个窗口,一位业务人员,要求程序模拟统计在一天时间内,所有客户的平均等待时间。模拟数据按客户到达的先后顺序依次由键盘输入,对应每位客户有两个数据,到达时刻和需要办理业务的时间。输入格式第一行:一天内的客户总人数n第二行:第一个客户的到达时刻和需要办理业务的时间第三行:第二个客户的到达时刻和需要办理业务的时间……第n行:第n - 1个客户的到达时刻和需要办理业务的时间第n + 1行:第n 个客原创 2021-04-16 21:32:26 · 2751 阅读 · 0 评论 -
几种排序的总结(包括含有重复数字的快速排序)
文章目录排序冒泡排序选择排序插入排序希尔排序排序冒泡排序冒泡排序(Bubble Sort):一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。假设一个无序数组的长度N,利用冒泡排序将其从小到到进行排序:基本思路:1)要进行N - 1趟,此处趟数用i来表示2)每一趟中要进行N - i次(i表示第几趟,从而原创 2020-07-05 21:25:46 · 15178 阅读 · 4 评论 -
C语言中缀表达式转成后缀表达式,并计算它的值
在C语言中,将中缀表达式转成后缀表达式,并计算它的结果,具体的思路如下:1、定义两个栈,numStack用于存放运算对象,最后存放运算结果的,fuStack用于存放运算符号的2、从左到右遍历字符串3、如果当前的字符是一个数字,那么先不要着急将其转成数字,然后压入到numStack中,因为考虑到多位数字的情况,所以需要从当前下标开始遍历,一直遍历到第一个运算符出现,那么这时候才可以将运算符前面的数字转成字符串。然后调用atoi,将字符串转成一个数字。这时候,将这个数字输出,同时将其压入到numStack原创 2021-04-07 12:24:01 · 6462 阅读 · 11 评论