![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
z_xindong
这个作者很懒,什么都没留下…
展开
-
顺序表的建立
定义实现 定义结构 定义操作 创建顺序表 初始化顺序表 插入元素 删除元素 销毁顺序表 定义数据结构是相互之间存在一种或多种特定关系的数据元素的集合。根据数据元素之间关系的不同特性,通常有如下4类基本结构:集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他的关系。如:广义表。 线性结构:结构中的数据元素之间存在一个对...转载 2018-07-24 14:29:02 · 10121 阅读 · 0 评论 -
hash解决冲突之---平方探测
数据结构实验之查找五:平方之哈希表Time Limit: 400ms Memory limit: 65536K 有疑问?点这里^_^题目描述给定的一组无重复数据的正整数,根据给定的哈希函数建立其对应hash表,哈希函数是H(Key)=Key%P,P是哈希表表长,P是素数,处理冲突的方法采用平方探测方法,增量di=±i^2,i=1,2,3,...,m-1输入输入一组测试数据,数据的第1行给...原创 2018-08-13 17:14:12 · 2830 阅读 · 0 评论 -
数据结构实验之图论八:欧拉回路
无向图存在欧拉回路的充要条件:一个无向图存在欧拉回路,当且仅当该图所有顶点度数都为偶数,且该图是连通图。有向图存在欧拉回路的充要条件一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图。混合图存在欧拉回路条件要判断一个混合图G(V,E)(既有有向边又有无向边)是欧拉图,方法如下:假设有一张图有向图G',在不论方向的情况下它与G同构。并且G'包含了G的所有有向边。那么...原创 2018-08-18 13:40:23 · 514 阅读 · 0 评论 -
完美网络
Problem Description完美网络是连通网络的基础上要求去掉网络上任意一条线路,网络仍然是连通网络。求一个连通网络要至少增加多少条边可以成为完美网络。Input第一行输入一个数T代表测试数据个数(T<=20)。每个测试数据第一行2个数n,m 分别代表网络基站数和基站间线路数。基站的序号为从1到n。接下来m行两个数代表x,y 代表基站x,y间有一条线路。(0 <...原创 2018-08-18 14:07:50 · 168 阅读 · 0 评论 -
7-4 是否同一棵二叉搜索树(25 分)
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检...原创 2018-08-20 11:19:15 · 1681 阅读 · 0 评论 -
C++Stl Map的使用
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识...原创 2018-08-20 11:48:36 · 533 阅读 · 0 评论 -
顺序表应用7:最大子段和之分治递归法
给定n(1<=n<=50000)个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n。 例如,当(a[1],a[2],a[3],a[4],a[5...原创 2018-09-06 15:57:59 · 196 阅读 · 0 评论 -
优先级队列几个应用详解
转载自:https://blog.csdn.net/liuzhanchen1987/article/details/7856893原创 2018-09-18 18:11:27 · 668 阅读 · 0 评论 -
有序链表的归并
Problem Description分别输入两个有序的整数序列(分别包含M和N个数据),建立两个有序的单链表,将这两个有序单链表合并成为一个大的有序单链表,并依次输出合并后的单链表数据。Input第一行输入M与N的值; 第二行依次输入M个有序的整数;第三行依次输入N个有序的整数。Output输出合并后的单链表所包含的M+N个有序的整数。Sample Input6...原创 2018-09-25 18:59:46 · 278 阅读 · 0 评论 -
双向链表
Problem Description学会了单向链表,我们又多了一种解决问题的能力,单链表利用一个指针就能在内存中找到下一个位置,这是一个不会轻易断裂的链。但单链表有一个弱点——不能回指。比如在链表中有两个节点A,B,他们的关系是B是A的后继,A指向了B,便能轻易经A找到B,但从B却不能找到A。一个简单的想法便能轻易解决这个问题——建立双向链表。在双向链表中,A有一个指针指向了节点B,同时,B...原创 2018-09-25 20:18:33 · 90 阅读 · 0 评论 -
数据结构实验之栈与队列三:后缀式求值
题目描述对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。输入输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。输出求该后缀式所对应的算术表达式的值,并输出之。示例输入59*684/-3*+#示例输出57提示基本操作数都是一位正整数!#include<stdio.h>#include&...原创 2018-09-25 21:19:07 · 165 阅读 · 0 评论 -
数据结构实验之栈与队列六:下一较大值(二)
Problem Description对于包含n(1<=n<=100000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找到,输出所找到的值,否则,输出-1。Input 输入有多组,第一行输入t(1<=t<=10),表示输入的组数;以后是 t 组输入:每组先输入n,表示本组序列的元素个数,之后依次输入本组的n个元素。O...原创 2018-09-26 17:02:02 · 117 阅读 · 0 评论 -
数据结构实验之栈与队列七:出栈序列判定
Problem Description给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次。输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个出栈序列,但4,3,5,1,2就不可能是该序列的出栈序列。假设压入栈的所有数字均不相等...原创 2018-09-26 17:38:37 · 99 阅读 · 0 评论 -
顺序表应用4-2:元素位置互换之逆置算法(数据改进)
Problem Description一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),设计一个时间复杂度为O(N)、空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段。注意:交换操作会有...原创 2018-10-08 20:15:52 · 109 阅读 · 0 评论 -
数据结构实验之查找四:二分查找
Problem Description在一个给定的无重复元素的递增序列里,查找与给定关键字相同的元素,若存在则输出找到的位置,不存在输出-1。Input一组输入数据,输入数据第一行首先输入两个正整数n ( n < = 10^6 )和m ( m < = 10^4 ),n是数组中数据元素个数,随后连续输入n个正整数,输入的数据保证数列递增。随后m行输入m个待查找的关键字key...原创 2018-08-13 16:56:51 · 145 阅读 · 0 评论 -
数据结构实验之二叉树的建立与遍历
二叉树的遍历分为以下三种:先序遍历:遍历顺序规则为【根左右】中序遍历:遍历顺序规则为【左根右】后序遍历:遍历顺序规则为【左右根】什么是【根左右】?就是先遍历根,再遍历左孩子,最后遍历右孩子。其余的同理;举个例子,看下图(图从网上找的):先序遍历:ABCDEFGHK中序遍历:BDCAEHGKF后序遍历:DCBHKGFEA代码实现起来非常的简单,只需要几个...原创 2018-08-03 11:55:44 · 3271 阅读 · 0 评论 -
数据结构实验之求二叉树后序遍历和层次遍历(根据前序中序还原二叉树)
先介绍一下树的层次遍历,顾名思义一层一层的遍历输出,eg::这一个二叉树的层次遍历为ABECFDGHK;其次就是根据一个二叉树的前序中序序列还原一个二叉树:首先要知道前序遍历以及中序遍历的规则,前序遍历也叫先序遍历。前序遍历有一个特点,第一个节点为二叉树的根节点,根据这个根节点可以在中序序列中找到根节点的左右子树。例如:一个二叉树前序序列是:a b d e g c f,中...原创 2018-08-03 16:24:18 · 844 阅读 · 0 评论 -
栈的创建以及操作
1.我们可以手写一个栈,格式如下:#include <bits/stdc++.h>using namespace std;#define intsize 1000typedef struct//一个顺序表;{ int *base;//也可以看作为数组首地址; int *top; int stacksize;//栈的长度;}sqstack;...原创 2018-07-30 13:42:17 · 5049 阅读 · 0 评论 -
C++ stl队列Queue用法介绍:删除,插入等操作代码举例
C++队列queue模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。 C++队列Queue是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。 C++队列Queue类成员函数如下:back() 返回最后一个元素empty() 如果队...转载 2018-07-30 13:59:01 · 2676 阅读 · 0 评论 -
二叉树-详解二叉排序树
二叉搜索树首先二叉排序树也是一棵二叉树,所谓二叉树,就是“任何节点最多只允许两个子节点”,这两个子节点称为左右子节点。如下便是一个二叉树。 1、二叉排序树性质:1、就是若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 2、若它的右子树不空,则右子树上所有节点的值均大于其根节点的值。 3、换句话说就是:任何节点的键值一定大于其左子树中的每一个节点的键值,并小于...原创 2018-08-04 12:59:09 · 335 阅读 · 0 评论 -
平衡二叉树
平衡二叉树又称AVL树。它或者是颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树节点的平衡因子BF定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有节点的平衡因子只可能为-1,0,1.只要二叉树上有一个节点的平衡因子的绝对值大于1,那么这颗平衡二叉树就失去了平衡。假设我们已经有棵平衡二叉树,现在让我们来...原创 2018-08-04 15:00:34 · 158 阅读 · 0 评论 -
C++stl中的双向队列
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似, deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓冲区用来保存deque中的数据。因此deque在随机访问和遍历数据会比vect...转载 2018-07-31 09:29:27 · 4363 阅读 · 0 评论 -
数据结构实验之图论二:基于邻接表的广度优先搜索遍历
给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历)Input输入第一行为整数n(0< n <100),表示数据的组数。对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t为遍历的起始顶点。 下面的m行...原创 2018-08-09 16:41:50 · 320 阅读 · 0 评论 -
【数据结构】哈夫曼树及哈夫曼编码
欢迎大家访问我的个人博客L_SKH'Blog哈夫曼树给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。树节点间的边相关的数叫做权。从树中的一个节点到另一个节点之间的分支构成两个点之间的路径,路径上的分支数目称作路径长度。图中...原创 2018-08-06 10:17:01 · 20676 阅读 · 1 评论 -
优先队列
优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时有一定的选择性,即根据元素的属性选择某一项值最优的出队~百度百科上这样描述的:优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素优先队列的类定义 优先队列是0个或多个元素的集合,每个元素都有一个优先权或值,对优先队列执行的操...原创 2018-08-06 10:27:15 · 124 阅读 · 0 评论 -
邻接表来存储图
Problem Description解决图论问题,首先就要思考用什么样的方式存储图。但是小鑫却怎么也弄不明白如何存图才能有利于解决问题。你能帮他解决这个问题么?Input 多组输入,到文件结尾。每一组第一行有两个数n、m表示n个点,m条有向边。接下来有m行,每行两个数u、v代表u到v有一条有向边。第m+2行有一个数q代表询问次数,接下来q行每行有一个询问,输入两个数为a,b。...原创 2018-08-10 16:08:58 · 846 阅读 · 0 评论 -
Trie树(字典树)
1. Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。它有3个基本性质:根节点不包...原创 2018-08-07 11:36:15 · 143 阅读 · 0 评论 -
线段树
一 概述线段树,类似区间树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(logn)。线段树的每个节点表示一个区间,子节点则分别表示父节点的左右半区间,例如父亲的区间是[a,b],那么(c=(a+b)/2)左儿子的区间是[a,c],右儿子的区间是[c+1,b]。二 从一个例子理解线段树下...原创 2018-08-07 16:42:45 · 118 阅读 · 0 评论 -
SDUTACM 数据结构实验之查找七:线性之哈希表
线性探测法解决哈希冲突:很好的一篇博客:建议先看一下是怎么回事。http://blog.163.com/wf_shunqiziran/blog/static/1763072092012612114126231/数据结构实验之查找七:线性之哈希表Time Limit: 1000 ms Memory Limit: 65536 KiBSubmit StatisticProblem...原创 2018-08-12 18:09:02 · 109 阅读 · 0 评论 -
前序中序,中序后序建立二叉树及二叉树的深度
#include<bits/stdc++.h>using namespace std;struct tree{ char data; tree *l,*r;};char a[55],b[55];//a前序b中序int l1,h1,l2,h2;tree *creat() //前序建立{ tree *root; char c; c ...原创 2018-11-01 16:43:23 · 189 阅读 · 0 评论