
数据结构课程
淼润淽涵
这个作者很懒,什么都没留下…
展开
-
选择排序
输入二行第一行数据个数n第二行n个数据输出从小到大的数据样例输入532 45 67 21 54样例输出21 32 45 54 67代码:#include<iostream>#include<cstring>int r[110];void selectSort(int r[ ],int n){ f...原创 2019-12-16 20:40:51 · 128 阅读 · 0 评论 -
归并排序
输入第一行为数列的总个数,第二行为待排序的数列输出排序后的数列样例输入810 4 6 3 8 2 5 7样例输出2 3 4 5 6 7 8 10代码:#include<iostream>#include<cstring>int r[110];int r1[110];void Merge(int r[]...原创 2019-12-16 20:36:49 · 192 阅读 · 1 评论 -
快速排序
输入第一行为数列的总个数,第二行为待排序的数列输出排序后的数列样例输入810 4 6 3 8 2 5 7样例输出2 3 4 5 6 7 8 10代码:#include<iostream>#include<cstring>int r[110];int Partition(int r[ ],int f...原创 2019-12-16 20:32:43 · 142 阅读 · 0 评论 -
插入排序
描述采用插入排序对数据进行从小到大排序输入二行第一行数据个数n第二行:具体数据输出从小到大排序样例输入512 45 32 86 10样例输出10 12 32 45 86代码:#include<iostream>#include<cstdio>int a[110];us...原创 2019-12-09 20:24:07 · 189 阅读 · 0 评论 -
折半查找
描述使用折半查找找出目标值所在位置。输入一个整数nn个整数要找的目标值输出要找的目标值在序列中的位置,如果找不到,输出"no answer"样例输入样例1输入31 2 32样例2输入41 5 6 84样例输出样例1输出2样例2输出no answer代码:#include<iost...原创 2019-12-09 20:21:02 · 506 阅读 · 0 评论 -
树表的查找技术
二叉排序树(BST)二叉排序树(也称二叉查找树):或者是一棵空的二叉树,或者是具有下列性质的二叉树:⑴若它的左子树不空,则左子树上所有结点的值均小于根结点的值;⑵若它的右子树不空,则右子树上所有结点的值均大于根结点的值;⑶ 它的左右子树也都是二叉排序树。 二叉排序树...原创 2019-12-02 20:26:13 · 245 阅读 · 0 评论 -
折半查找判定树
判定树:折半查找的过程可以用二叉树来描述树中的每个结点对应有序表中的一个记录结点的值为该记录在表中的位置通常称这个描述折半查找过程的二叉树为折半查找判定树,简称判定树。判定树的构造方法⑴ 当n=0时,折半查找判定树为空;⑵ 当n>0时, 折半查找判定树的根结点为mid=(n+1)/2, 根结点的左子树是与有序表r[1] ~ r[mid-1]相对应的折半查...原创 2019-12-02 20:04:22 · 9275 阅读 · 0 评论 -
二分查找(折半查找)
适用条件:线性表中的记录必须按关键码有序;必须采用顺序存储。折半查找的基本思想(mid=(1+n)/2)[ r1 … … … rmid-1 ] rmid [ rmid+1 … … … rn ] 如果k<rmid 如果k>rmid 查找左半区...原创 2019-12-02 19:47:12 · 214 阅读 · 0 评论 -
图论学习总结
一、AOV网AOV网:在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,称这样的有向图为顶点表示活动的网,简称AOV网。AOV网特点:1.AOV网中的弧表示活动之间存在的某种制约关系。 2.AOV网中不能出现回路 。二、AOE网AOE网:在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这样的有向图叫做边表示...原创 2019-12-01 23:35:56 · 1141 阅读 · 0 评论 -
图的最短路径
图的最短路径求法有两种,Dijkstra求单源最短路, floyd算法求任意两点的最短路。Dijkstra算法#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>using namespace...原创 2019-11-28 19:24:11 · 133 阅读 · 0 评论 -
图论----最小生成树
最小生成树对于一个图连通图G<V,E>,n个点,e条边,最小生成树就是n-1条边图的生成子图,且这n-1条边的权值和最小。对于求最小生成树的两种算法:prim算法和kruskal算法一、prim算法(增点法)数组lowcost[n]:用来保存集合V-U中各顶点与集合U中顶点最短边的权值,lowcost[v]=0表示顶点v已加入最小生成树中;数组adjvex[n]...原创 2019-11-19 15:04:52 · 206 阅读 · 0 评论 -
图的基本概念
图的定义:图是由顶点的有穷集合和顶点之间的边组成。通常记为G<V ,E>,V是点的集合,E是边的集合。边、图的有向与无向如果顶点vi与vj之间的边没有方向,则称这条边为无向边,用无序偶对(Vi,Vj)。如果图任意两个顶点之间都是无向边,则称为无向图。若顶点Vi与Vj之间有方向,则称这条边为有向边。有有序偶对< Vi,Vj>表示。如果图任意两顶点之间都是有...原创 2019-11-16 21:54:33 · 275 阅读 · 0 评论 -
树和二叉树
树的基本概念结点的度:结点所拥有的子树的个数。树的度:树中各结点度的最大值。叶子结点:度为0的结点,也称为终端结点。分支结点:度不为0的结点,也称为非终端结点。结点所在层数:根结点的层数为1;对其余任何结点,若某结点在第k层,则其孩子结点在第k+1层。树的深度:树中所有结点的最大层数,也称高度。层序编号:将树中结点按照从上层到下层、同层从左到右的次序依次给他们编以从1开...原创 2019-11-16 20:59:11 · 247 阅读 · 0 评论 -
前缀、中缀、后缀表达式(逆波兰表达式)
介绍前缀表达式、中缀表达式、后缀表达式都是四则运算的表达方式,用以四则运算表达式求值,即数学表达式的求职中缀表达式中缀表达式就是常见的运算表达式,如(3+4)×5-6前缀表达式前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前比如:- × + 3 4 5 6前缀表达式的计算机求值从右至左扫描表达式,遇到数字时,将数...转载 2019-11-13 22:39:10 · 139 阅读 · 0 评论 -
顺序存储的二叉树的前序遍历、中序遍历、后续遍历算法
输入第一行:二叉树中的结点个数n之后的n行中,每一行包含两个数据 :number: 代表结点在完全二叉树中的层序编号(根节点编号是1)value: char 型的数据,代表结点的值输出三行第一行为前序遍历序列第二行为中序遍历序列第三行为后序遍历序列样例输入31 a2 b3 c样例输出abcbacbca代码:#in...原创 2019-11-06 21:50:00 · 2165 阅读 · 0 评论 -
采用二叉链表构造二叉树并对二叉树进行前序、中序、后序遍历
采用二叉链表的方式进行存储构造一个二叉树类,实现以下算法:1.创建二叉树 2.对二叉树进行前序、中序、后序遍历输入扩展的前序序列.在一棵树处理结束后,根据响应判断是否处理下一棵树输出前序、中序、后序样例输入ab##c##Yabc####N样例输出abcbacbcaabccbacba代码:#inclu...原创 2019-11-06 21:46:29 · 6282 阅读 · 1 评论 -
二叉树的前序、中序、后序遍历
一棵二叉树由根结点、左子树和右子树三部分组成,若规定 D、L、R 分别代表遍历根结点、遍历左子树、遍历右子树,则二叉树规定为3种遍历方式:DLR--前序遍历(根在前,从左往右,一棵树的根永远在左子树前面,左子树又永远在右子树前面 )LDR--中序遍历(根在中,从左往右,一棵树的左子树永远在根前面,根永远在右子树前面)LRD--后序遍历(根在后,从左往右,一棵树的左子树永远在右子树...原创 2019-10-06 18:37:23 · 585 阅读 · 0 评论 -
字符串和多维数组
字符串模式匹配:给定主串S="s1s2…sn"和模式T=“t1t2…tm”,在S中寻找T 的过程称为模式匹配。如果匹配成功,返回T 在S中的位置,如果匹配失败,返回-1。BF算法 :在串S和串T中设比较的起始下标i和j; 循环直到S或T的所有字符均比较完;如果S[i]==T[j],继续比较S和T的下一个字符; 否则,将i和j回溯(i=i-j+1,j=0),准备下一趟...原创 2019-11-06 21:34:49 · 205 阅读 · 0 评论 -
单链表基本操作
template <typename T>struct Node { T data; Node<T> *next; }; template <class T>class LinkList { public: LinkList(){first=new Node<T>;first->next=NULL;} ...原创 2019-10-28 21:20:13 · 114 阅读 · 0 评论 -
栈和队列基本操作
顺序栈const int MAX_SIZE=100;template <class T>class seqStack{ public: seqStack ( ) ; ~seqStack ( ); void Push ( T x ); T Pop ( ); T GetT...原创 2019-10-28 21:07:13 · 176 阅读 · 0 评论 -
队列基本操作
描述输入若干个整数(小于50个),整数共有四种类型,不同类型的整数代表不同操作。说明如下:1、[10,99]之间的整数:将该整数入队。2、-1: 队首整数出队。3、-2: 显示队列所有整数。4、-3: 输入结束。说明:采用链队列实现,必须有队列初始化函数、入队函数、出队函数。输入第一行若干整数(必须满足上述四种类型要求),以-3结束。输出输出队...原创 2019-10-28 21:02:17 · 338 阅读 · 0 评论 -
有序的双链表的实现
描述定义有序的双链表类,链表中存储整型数据,创建带头结点的有序双链表,要求包含以下成员函数:双链表的构造函数(非空的链表,输入数据为0,表示输入结束)插入操作(将一个数据元素插入到有序的双链表中,插入之后链表仍然有序,输入数据为0表示插入操作结束)按值删除节点(考虑有重复值的情况)双链表的遍历操作双链表的析构输入输入链表中的元素,根据输入元素,创建有序双链表...原创 2019-10-14 21:29:52 · 263 阅读 · 0 评论 -
单链表的实现
描述定义单链表类,创建带头结点的单链表(节点类型为整型数据),要求包含以下成员函数:头插法创建单链表(利用构造函数实现)尾插法创建单链表(重载构造函数实现)链表的遍历按值删除一个节点按位置删除一个节点链表的析构输入输入一组数据,以尾插法的形式创建单链表(0表示输入结束)(构造第一个链表)输入一组数据,以头插法的形式创建单链表(0表示输入结束)(构造第二个链表...原创 2019-10-14 21:08:22 · 275 阅读 · 0 评论 -
数据结构之线性表
线性表基本操作模板const int MaxSize=100;template<class DataType>class SeqList{public: SeqList(){length=0;} //无参构造函数,建立一个空的顺序表 SeqList(DataType a[],int n); //有参构造函数,建立一个长度为n...原创 2019-09-23 00:18:12 · 207 阅读 · 0 评论