数据结构
Spidy_harker
这个作者很懒,什么都没留下…
展开
-
数据结构与算法 实验8:图ADT的基本实现
假设图结构具有n个元素(顶点,n不大于500),数据元素为字符,如果是加权图,权值为整数。请编码实现图ADT。存储结构的选择: 1: 邻接矩阵 2: 邻接表执行的操作:1:创建图2:输出图的存储结构(邻接矩阵或邻接表,格式见后面说明)3:计算各个顶点的度(有向图时,分为入度和出度)4:深度遍历(需要输入遍历开始顶点)5:广度遍历(需要输入遍历开始顶点)0:退出注:(1)图的类型分为4种,1:无向,不加权2:有向,不加权3:无向,加权4:有向,加权(2)边用一对顶点原创 2020-05-12 16:55:17 · 1160 阅读 · 0 评论 -
数据结构与算法实验 附加实验:判断输入序列是否是合法的栈输出序列
问题描述:已知自然数1,2,…,N(1≤N≤10000)依次入栈(即a<b当且仅当a先于b入栈),请设计算法判断输入序列C1,C2,…,CN是否为可能的出栈序列。例如:N=5 时,3,4,2,1,5是一个可能的出栈序列,因为其可以按如下操作获得:push 1, push 2, push 3, pop, push 4, pop, pop, pop, push 5, pop输入:可包含...原创 2020-04-27 15:45:31 · 1133 阅读 · 0 评论 -
数据结构与算法实验 实验7:算术表达式的语义二叉树 (表达式二叉树转化为中缀表达式,求值)
一个算术表达式的计算语义可以用二叉树唯一的表示出来。假设算术表达式的语义二叉树已经给出,请编码实现算术表达式的中缀形式(保持计算语义)的输出,并计算出该表达式的值。要求:1)使用二叉树的完全前序序列建立表达式的语义二叉树,空子树用符号@表示;2)算术运算符包括:+, -, *, / ; 运算量只考虑单数字字符(1位整数)3 ) 输出时用括号该表优先级;提示:1)递归执行下列步骤即可求...原创 2020-04-24 19:52:27 · 1203 阅读 · 0 评论 -
数据结构与算法实验 实验6:二叉树ADT的二叉链式实现 (由完全前序序列创建二叉树 / 求二叉树的节点数/树高/叶子节点数 /先序中序后序层序遍历)
假设二叉数的数据元素为字符,采用二叉链式存储结构。请编码实现二叉树ADT,其中包括创建二叉树、遍历二叉树(深度、广度)、求二叉树的深度(高度)、计算二叉树的元素个数、计算二叉树的叶子数、二叉树的格式输出等。根据输入的符号,执行相应的操作。如下:C:创建二叉树,创建成功输出 “Created success!”。要求实现两种创建算法。输入数字“1" ,是根据完全前序序列创建二叉树,#表示空结点(...原创 2020-04-24 00:37:50 · 1315 阅读 · 0 评论 -
数据结构与算法实验: 附加实验 二叉树的建立和输出
问题描述:假设二叉树的元素为字符,采用二叉链式存储。请编写算法完成:(1)已知二叉树的中序和后序遍历序列,创建二叉树;(2)实现二叉树的分层输出;输入有三行:第一行,一个整数n,是二叉树中的元素(结点)个数;第二行,二叉树的中序遍历序列第三行,二叉树的后序遍历序列输出:如果二叉树为空,则输出“Binary tree is empty!”如果二叉树不空,则二叉树有几层则输出几行...原创 2020-04-23 22:33:58 · 439 阅读 · 0 评论 -
特殊矩阵的处理 实验5:稀疏矩阵ADT的十字链表实现,矩阵乘法/加法/转置
稀疏矩阵ADT的实现:在现实应用中,一些规模很大的特殊矩阵具有重要的地位。特殊矩阵可以采用二维数组存储,简单直接(顺序存储方式保持了矩阵中元素之间的二维线性关系),矩阵操作的算法都很简单,但是其空间的利用率很低(因为重复元素或零元素比较多)。 稀疏矩阵就是一种应用很广泛的特殊的矩阵,在实现稀疏矩阵ADT时通常采用“压缩”存储方案,即把只存储稀疏矩阵的非零元素,把稀疏矩阵抽象成为一个以三元组(行,...原创 2020-04-14 10:57:19 · 1687 阅读 · 0 评论 -
二叉树,由先序序列和中序序列建树 / 满(真)二叉树由先序序列和后序序列建树
中序序列可以与先序,后序,层序序列中的任何一个建立一棵树,而后三者之间两两不能建树(因为无法区分根节点的左右子树)上代码#include &amp;lt;iostream&amp;gt;using namespace std;struct node{ int x; node* lson; node* rson;};int pre[1000],in[1000];///...原创 2019-03-16 11:49:54 · 1893 阅读 · 0 评论 -
数据结构与算法实验:实验四 栈应用二 表达式求值(+、-、* 、/、^)
表达式求值是进行数据处理的最基本操作。请编写程序完成一个简单算术表达式的求值。要求如下:(1) 运算符包括:+、-、* 、/、^(乘方)、括号(2)运算量为数值常量,根据自己的能力可以对运算量做不同的约束,例如1位整数、多位整数、实数等(会有不同的测试用例);输入:一行,即表达式,以“=”结束。例如:5*(8-3)+6/5=输出:一行,即表达式的值。结果值为整数时输出为整数,如果有小数时...原创 2020-04-01 14:15:55 · 1579 阅读 · 0 评论 -
数据结构与算法实验:实验二 链表实现一元多项式的加法/减法/乘法/求导
#include <iostream>#include <cstdio>#include <string>#include <cstring>using namespace std;int *create(int x,int y){ int *a; a=new int[2]; a[0]=x,a[1]=y; ...原创 2020-03-28 23:22:16 · 1334 阅读 · 0 评论 -
数据结构与算法实验一:线性表的基本操作 实现C++链表类+集合的并/交运算
#include <iostream>#include <cstdio>#include <vector>using namespace std;template<class T>struct node{ T x; node<T>* nex,*pre; node() { nex...原创 2020-03-28 23:18:01 · 1760 阅读 · 0 评论 -
Treasure Map(ZOJ - 3209)
Your boss once had got many copies of a treasure map. Unfortunately, all the copies are now broken to many rectangular pieces, and what make it worse, he has lost some of the pieces. Luckily, it is po...原创 2020-03-26 08:29:08 · 390 阅读 · 0 评论 -
Sudoku (POJ3047)/Sudoku(ZOJ3122)
思路:1.情况数:9 * 9 * 9 (81格,每格有9个状态)2.条件数:每个格子是否已填写,每行,每列,每宫的数不重复(数独的规则),共9 * 9 * 4种3.情况数对应行数,条件数对应列数,这样就能转化为精准覆盖的问题了,选择81行保证每一列有且仅有一个1.4.行分配:每个格子有9种情况,则给每个格子分配9行,在该9行内,第x行填1,表示这个格子填了x(1~9)。那么坐标(i,j)填...原创 2020-03-26 07:26:02 · 268 阅读 · 0 评论 -
DLX算法模板(注释详解)
struct DLX{ int n,m;///行列的规模 int u[maxnode],d[maxnode],l[maxnode],r[maxnode];///结点四个方向的指针 int col[maxnode],row[maxnode];///结点的行列指针 int h[maxn],s[maxn]; ///h[]行首结点(额外的行结点),s[]每一列的个...原创 2020-03-25 16:50:43 · 754 阅读 · 0 评论 -
神龙的难题(FZU - 1686)
这是个剑与魔法的世界.英雄和魔物同在,动荡和安定并存.但总的来说,库尔特王国是个安宁的国家,人民安居乐业,魔物也比较少.但是.总有一些魔物不时会进入城市附近,干扰人民的生活.就要有一些人出来守护居民们不被魔物侵害.魔法使艾米莉就是这样的一个人.她骑着她的坐骑,神龙米格拉一起消灭干扰人类生存的魔物,维护王国的安定.艾米莉希望能够在损伤最小的前提下完成任务.每次战斗前,她都用时间停止魔法停住时间,然后...原创 2020-03-25 16:42:25 · 306 阅读 · 0 评论 -
数据结构总结1(火车进栈/兔子与兔子/括号画家/Editor/邻值查找/最大子序和/前缀统计/Phone List/The XOR Largest Pair)
问题 A: 火车进栈题目描述这里有n列火车将要进站再出站……但是,每列火车只有1节—那就是车头……描述有n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个死胡同,而且站台只有一条股道,火车只能倒着从西方出去,而且每列火车必须进站,先进后出。(某生:不就是个栈吗?每次可以让右侧头火车进栈,或者让栈顶火车出站?老师:闭嘴!)就像这样:出站<—...原创 2020-03-05 10:59:13 · 830 阅读 · 0 评论 -
问题 O: 奇数码问题(求逆序数,树状数组)
题目思路:利用结论两个数码的逆序数奇偶性相同即可变为相同的局面,否则不可updata()和getsum()是树状数组的更新和求和操作,slove()是求逆序数的函数#include <iostream>#include <cstdio>#include <cstring>using namespace std;int n,c[300005];in...原创 2019-08-17 22:00:26 · 224 阅读 · 0 评论