数据结构
文章平均质量分 57
「已注销」
这个作者很懒,什么都没留下…
展开
-
中缀转前后缀表达式
一个中缀式到其他式子的转换方法: 这里我给出一个中缀表达式a+b*c-(d+e) 第一步:按照运算符的优先级对所有的运算单位加括号,式子变成:((a+(b*c))-(d+e)) 第二步:转换前缀与后缀表达式 前缀:把运算符号移动到对应的括号前面 则变成:-( +(a *(bc)) +(de)),把括号去掉:-+a*bc+de 前缀式子出现 后缀:把运算符号移动到对应的括号后面 则变成...转载 2018-12-26 17:07:50 · 445 阅读 · 0 评论 -
树 二叉树 森林的转换
1、树转换为二叉树由于二叉树是有序的,为了避免混淆,对于无序树,我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号。将树转换成二叉树的步骤是:(1)加线。就是在所有兄弟结点之间加一条连线;(2)抹线。就是对树中的每个结点,只保留他与第一个孩子结点之间的连线,删除它与其它孩子结点之间的连线;(3)旋转。就是以树的根结点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。...转载 2018-12-27 21:55:18 · 537 阅读 · 0 评论 -
拓扑排序概念
拓扑排序,顾名思义,就是一种排序方法。这是一种什么排序?这种排序的作用?然后怎么去实现这种排序算法?现在就让我们仔细研究下。1、什么是拓扑排序,也就是拓扑排序的概念实际上,拓扑排序是一种图论算法,该算法在《数据结构与算法》一书中有涉猎。引用维基百科的定义:在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological sorti...转载 2018-12-27 22:43:41 · 3665 阅读 · 1 评论 -
排序算法稳定性比较——转载
(1)冒泡排序冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。(2)选择排序选择排序是给每个位置选择当前元素最小的...转载 2018-12-28 11:23:46 · 151 阅读 · 0 评论 -
堆排序--图解
大堆顶 小堆顶构造堆在构造有序堆时,我们开始只需要扫描一半的元素(n/2-1 ~ 0)即可,为什么?因为(n/2-1)~0的节点才有子节点,如图1,n=8,(n/2-1) = 3 即3 2 1 0这个四个节点才有子节点 所以代码...转载 2018-12-11 23:17:09 · 367 阅读 · 0 评论 -
归并排序---图解
一张图看懂归并的定义:将两个或两个以上的有序表组合成新的有序表#include "stdio.h"#include "malloc.h"#include <string.h>#include<cstdlib> #define OK 1#define ERROR 0#define MAXSIZE 100 typedef int Status;...转载 2018-12-11 23:39:46 · 171 阅读 · 0 评论 -
typedef与结构体
在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名。Stu==struct Student ...转载 2018-12-24 14:52:23 · 2909 阅读 · 2 评论