自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 二叉树深度的程序中增加求叶子结点和交换左右子树 按层遍历二叉树 二叉树最大的宽度

1.在求二叉树深度的程序中增加求叶子结点和交换左右子树的功能。2.实现按层遍历二叉树算法。3.计算二叉树最大的宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值)。(选作)//算法5.5 计算二叉树的深度#include<iostream>using namespace std;//二叉树的二叉链表存储表示typedef struct BiNode{ char data; //结点数据域 struct BiNode *lchild,*rchi

2021-12-24 21:46:31 1121

原创 邻接矩阵广度优先遍历算法 连通图采用邻接表深度优先遍历的非递归过程 图G中距离顶点v的最短路径长度最大迪杰斯特拉

1.采用邻接矩阵存储图的广度优先遍历算法的实现(参考教材算法6.5选作)。2.一个连通图采用邻接表作为存储结构,设计一个算法,实现从顶点v出发的深度优先遍历的非递归过程。3.设计一个算法,求图G中距离顶点v的最短路径长度最大的一个顶点,设v可达其余各个顶点。1//算法6.7 广度优先搜索遍历连通图#include <iostream>using namespace std;#define MVNum 100 //最大顶点数

2021-12-24 20:24:07 3734

原创 数据结构上机 实验八:排序算法实现与比较

实验目的和要求:熟悉多种排序算法,理解每种排序算法思想,掌握排序算法的基本设计方法,掌握排序算法时间复杂度和空间复杂度的分析方法。实验内容: 1.对所讲过算法深入理解,应用随机函数和时间函数比较各种排序的运行时间。 2.实现双向冒泡排序(相邻两趟排序向相反方向冒泡)。//文件名:excise6.cpp#include <stdio.h>#include <stdlib.h>#include <sys/timeb.h>#include <time.h

2021-12-24 20:15:59 2169

原创 利用二叉排序树的字符统计 二叉排序树的判定 数据结构

1.利用一棵二叉排序树统计字符串中出现的字符及其次数。结点的类型:typedef struct tnode{char ch; //字符int count; //出现次数struct tnode *lchild,*rchild;} tnode,*BTree;代码实现//文件名:exp9-5.cpp#include<iostream>using namespace std;#define MAXWORD 10...

2021-12-19 21:05:57 1431

原创 数据结构上机 实验七:查找算法实现与分析

实验七:查找算法实现与分析目录实验目的:实验内容:代码实现1代码实现2运行结果实验目的:1.掌握顺序表的查找方法,尤其是二分查找方法。   2.掌握二叉排序树的建立及查找过程,理解二叉排序树查找过程及插入和删除算法。实验内容:1.编写程序实现有序表二分查找的递归算法;2.用非递归的方法实现二叉排序树上的查找(并求出查找成功时关键字所在的层次)。代码实现1//算法7.3 折半查找#include<iostream>using na

2021-12-19 14:03:06 1983 1

原创 educoder数据结构 查找 第2关:实现散列查找

目录任务描述相关知识编程要求测试说明代码实现任务描述本关要求通过补全函数ILH_InsKey和ILH_DelKey来分别实现插入和删除操作。相关知识本关讨论散列存储,散列函数使用除留余数法,冲突解决方法采用独立链表地址法。假设有 8 个关键码: 7 , 15 , 23 , 31 , 12 , 14 , 10 , 17 ,采用散列函数hash(key)=key%7,其存储结构图如图 1 所示,它由 7 个独立链表组成,散列值相同的关键码在同一个链表里,独立链表的头结点组

2021-12-15 16:35:20 5627 1

原创 educoder数据结构 查找 第1关:实现折半查找

目录任务描述相关知识编程要求测试说明代码实现任务描述本关要求通过补全函数BSL_FindKey来实现在已排序的顺序表中查找关键码值为key的结点并返回该结点的编号。相关知识折半查找通常是针对顺序存储的线性表,线性表的结点按关键码从小到大排序,后面称之为折半查找的顺序表。为了简化讨论,假设折半查找的顺序表中每个结点只含一个关键码,关键码为整数。图 1 给出了一个存储了 4 个关键码的折半查找的顺序表的存储结构图。下面描述了线性表顺序存储的一种实现方案。该实现方案的示意图

2021-12-15 16:32:20 5221

原创 educoder数据结构 树 第2关:打印二叉树

目录任务描述相关知识编程要求测试说明代码实现任务描述本关任务:请你实现 PrintTree.cpp 里的void PrintTreeRootLeft(TNode* r, int layer)函数。相关知识用二叉树的双指针结构存储二叉树,每个结点所含数据元素均为单个字母,试编程实现按树形状打印二叉树的算法。例如:图 1 的二叉树打印为右边的形状。图 1 打印树结构示意图图 1 中的二叉树打印出来的树结构实际上是一个6行4列的矩阵,如图 2 所示。图

2021-12-14 17:37:16 6971

原创 educoder数据结构 树 第1关:由双遍历序列构造二叉树

目录任务描述编程要求代码实现任务描述本关任务:实现 ConstructTree.cpp 里的TNode* InPreToTree(char *pa, char *ia, int p1, int p2, int i1, int i2)函数。相关知识给定一棵二叉树的前序遍历序列和中序遍历序列可以构造出这棵二叉树。例如前序序列是ABDECFG,中序序列是DBEAFCG,那么这颗二叉树的结构如图 1 所示。树结点结构定义为:struct TNode{ char.

2021-12-14 17:34:36 11695 2

原创 educoder数据结构 字符串匹配 第2关:实现KMP字符串匹配

任务描述本关的编程任务是补全 step2/kmp.cpp 文件中的KmpGenNext函数,以实现 KMP 字符串匹配。该函数生成给定字符串的next数组。相关知识第 1 关中实现的朴素的字符串匹配算法在实际应用系统中效率低,而 KMP 字符串匹配算法可以实现高效的匹配。假设长字符串为t,短字符串为p。为了进行 KMP 匹配,首先需要计算字符串p的next数组,后面实现了计算该数组的函数void KmpGenNext(char* p, int* next)。对于 “abcabcab” ,计算

2021-12-14 17:30:46 5166 2

原创 educoder数据结构 字符串匹配 第1关:实现朴素的字符串匹配

任务描述本关任务是实现函数int FindSubStr(char* t, char* p)。相关知识在一个长字符串中寻找一个短字符串出现的位置,这是字符串匹配问题。例如:长字符串是 “string” ,短字符串是 “ring” ,那么短字符串在长字符串中出现的位置是 2 ,即 “ring” 在 “string” 中出现的开始位置是 2 。编程要求本关的编程任务是补全 step1/mystr.cpp 文件中的FindSubStr函数,以实现朴素的字符串匹配。具体请参见后续测试样

2021-12-14 17:28:33 5375

原创 educoder数据结构 计算表达式 第2关:栈的应用 - 计算后缀表达式

任务描述本关任务要求通过实现函数double ComputePostfix(char* s)来计算后缀表达式。相关知识和中缀表达式的计算一样,后缀表达式的计算也需要用到栈。关于链接存储的栈,其中已实现了如下操作: 创建栈:创建一个链式栈。具体操作函数定义如下: LinkStack* LS_Create(); 释放栈:释放栈所占用的空间。具体操作函数定义如下: void LS_Free(LinkStack* ls); 清空一个栈:将链式栈变为空栈。具体操作函数定义如下:

2021-12-14 15:56:01 3242

原创 educoder数据结构 计算表达式 第1关:栈的应用 - 计算中缀表达式

任务描述本关任务要求通过实现函数double ComputeInfix(char* s)来计算中缀表达式。相关知识中缀表达式的计算需要用到栈。关于链接存储的栈,其中已实现了如下操作: 创建栈:创建一个链式栈。具体操作函数定义如下: LinkStack* LS_Create(); 释放栈:释放栈所占用的空间。具体操作函数定义如下: void LS_Free(LinkStack* ls); 清空一个栈:将链式栈变为空栈。具体操作函数定义如下: void LS_MakeEmp

2021-12-14 15:53:07 4189

原创 educoder数据结构与算法 栈 第2关:实现一个链接存储的栈

任务描述本关任务是实现 step2/LnkStack.cpp 中的LS_IsEmpty、LS_Length、LS_Push、LS_Pop和LS_Top五个操作函数,以实现判断栈是否为空、求栈的长度、进栈、出栈以及获取栈顶元素等功能。相关知识链接存储的栈栈的存储也可以采用链接存储的方式来实现。下面给出了一种基于链接存储的栈的实现方案:如图 1 所示:该栈存储了 3 个元素 {56,77,15} ,其中 56 是栈顶元素。这种实现方案中与栈相关的两个属性元素top和len介绍如下:

2021-12-11 12:22:25 6337 2

原创 educoder数据结构与算法 栈 第1关:实现一个顺序存储的栈

任务描述本关任务是实现 step1/SeqStack.cpp 中的SS_IsFull、SS_IsEmpty、SS_Length、SS_Push和SS_Pop五个操作函数,以实现判断栈是否为满、是否为空、求栈元素个数、进栈和出栈等功能。相关知识栈的基本概念栈是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算,这一端被称为栈顶。栈既可以采用顺序存储,也可以采用链接存储来实现。下面给出了一种基于顺序存储的栈的实现方案:如图 1 所示:该栈存储了 4 个元素 {56,77,1

2021-12-11 12:19:52 10288 1

原创 educoder数据结构与算法 队列 第2关 实现一个链接存储的队列

任务描述本关任务:实现 step2/CLnkQueue.cpp 中的CLQ_IsEmpty、CLQ_Length、CLQ_In和CLQ_Out四个操作函数,以实现判断队列是否为空、求队列长度、队列元素入队和出队等功能。相关知识链式队列的定义队列的存储除了顺序存储之外也可以采用链接存储方式来实现。图 1 描述了队列的一种链接存储实现方案。该队列存储了 3 个元素 {56,77,15} ,其中 56 为队列头, 15 为队列尾。这种实现方案中涉及到的两个属性元素如下:rear:

2021-12-11 12:16:18 8152

原创 数据结构上机 实验六:图结构基本算法的实现(其二)

目录1.最小生成树Kruskakl(克鲁斯卡尔算法)2.最短路径Floyed(弗洛伊德算法)3.最小生成树Prim(普里姆算法)1.最小生成树Kruskakl(克鲁斯卡尔算法)//算法6.9 克鲁斯卡尔算法#include <iostream>using namespace std;typedef char VerTexType; //假设顶点的数据类型为字符型 typedef int ArcType; #define M

2021-12-10 19:45:55 948

原创 数据结构上机 实验六:图结构基本算法的实现(其一)

实验六:图结构基本算法的实现实验目的:掌握图的存储结构及深度优先、广度优先遍历算法,理解图在实际应用中的经典算法如:最小生成树算法、最短路径算法、拓扑排序算法等。实验内容:实现邻接链表和逆邻接链表两种求顶点入度的算法,并在拓扑排序算法及求关键路径算法中应用。代码如下//算法6.13 关键路径算法#include <iostream>using namespace std;#define MVNum 100 //最大顶点数

2021-12-10 17:45:35 1537

原创 educoder数据结构与算法 图 第2关:实现图的深度优先遍历

任务描述本关任务:实现 graph.cpp 里的函数int Graph_DepthFirst(Graph*g, int start, Edge* tree)。 注意遵守约定:编号大的先进栈。相关知识图 2 给出了对图 1 的无向图的存储结构图:每个顶点的名称由一个字符串描述,所有字符串的起始地址组织为一个数组,数组的起始地址为vetex;顶点的相邻关系保存在相邻矩阵中,其起始地址为adj,adj[i*n+j]的值为 1 表示i号顶点到j号顶点有边,为 0 表示无边,其中n是顶点个数,i和

2021-12-09 17:35:00 11039

原创 educoder数据结构与算法 队列 第1关:实现一个顺序存储的队列

任务描述本关任务:实现 step1/SeqQueue.cpp 中的SQ_IsEmpty、SQ_IsFull、SQ_Length、SQ_In和SQ_Out五个操作函数,以实现判断队列是否为空、是否为满、求队列长度、队列元素入队和出队等功能。相关知识队列是一个插入操作和删除操作受到限制的线性表数据结构。队列的插入和删除被限制在表的两端,即插入操作只能在表的一端进行,而删除操作只能在表的另一端进行,因此队列又称先进先出表。顺序存储的队列队列既可以采用顺序存储,也可以采用链接存储来实现。下面给出

2021-12-09 16:26:35 11842 1

原创 educoder数据结构与算法 线性表 第2关:实现一个链接存储的线性表

任务描述本关任务:完成一个链接存储的线性表的小程序。相关知识线性表的存储也可以采用链接存储方式来实现。链接存储方式包括单链表、双链表和循环链表等形式。下面描述了一种基于单链表的线性表实现方案:为了讨论简单,假设数据元素的类型为整型:typedef int T;在链表中,每个数据元素为一个链表结点,结点的具体定义为:struct LinkNode { T data; LinkNode* next; };如上面的单链表示意图所示,一个链表主要有front

2021-12-09 16:22:57 4279

原创 educoder数据结构与算法 线性表 第1关:实现一个顺序存储的线性表

任务描述本关任务:实现 step1/Seqlist.cpp 中的SL_InsAt、SL_DelAt和SL_DelValue三个操作函数,以实现线性表中数据的插入、删除与查找等功能。相关知识线性表是最基本、最简单、也是最常用的一种数据结构。线性表结构中,数据元素之间通过一对一首尾相接的方式连接起来。具体实现时,线性表可以采用不同的存储策略。下面给出了一种基于顺序存储的线性表实现方案:该方案将线性表存储在一片连续空间里,并通过data、len和max三个属性元素。组织成为一个结构:dat

2021-12-09 16:21:17 6011 2

原创 educoder数据结构与算法 复习指针基本概念 第3关:利用指针方法求数组的最大值和最小值

任务描述本关任务:编写程序,利用指针方法求数组的最大值和最小值。相关知识擂台赛算法思想求最大值的擂台赛算法思想:从数组中任意找一个数组元素作为擂主,默认是最大值,遍历数组,将每个数组元素依次和擂主比较,如果比擂主大就将这个数组元素的值赋给擂主,否则就离开,直至最后一个数组元素,即可得出擂主就是最大值。为了完成本关任务,需要定义一个指针变量指向任意一个数组元素,擂主是指针变量指向的数组元素,遍历数组,将每个数组元素依次和指针变量指向的数组元素比较。如果大就将这个数组元素的地址赋给指针变量,

2021-12-09 16:18:11 1306 1

原创 educoder数据结构与算法 复习指针基本概念 第2关:交换两个指针变量的值

任务描述本关任务:编写程序交换两个指针变量的值。相关知识为了完成本关任务,你需要掌握指针数据类型。基本数据类型和指针数据类型的区别指针是一种特殊的,同时又是具有重要作用的数据类型。其值用来表示某个变量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。int a = 100; // 100为int型常量,a为int型变量 double b = 3.14; // 3.14为double型常量,b为double型变量 int *p

2021-12-09 16:15:40 2660 1

原创 educoder数据结构与算法 复习指针基本概念 第1关:通过指针变量间接访问变量

任务描述本关任务:编写程序通过指针变量间接访问整型变量。相关知识为了完成本关任务,你需要掌握: 1.如何定义指针变量; 2.掌握两个与指针变量有关的运算符。如何定义指针变量指针变量指的是定义存放变量地址的变量,定义指针变量如下:int *p1; //p1是指向int型变量的指针变量 float *p2; //p2是指向float型变量的指针变量 double *p3; //p3是指向double型变量的指针变量 char *p4; //p4是指向char型变量的指针变量

2021-12-09 16:10:00 4028 2

原创 educoder数据结构与算法 图 第1关:实现图的宽度优先遍历

任务描述本关任务:请你实现 graph.cpp 里的int Graph_WidthFirst(Graph*g, int start, Edge* tree)函数。 注意遵守约定:编号小的优先入队列。相关知识图 2 给出了对图 1 的无向图的存储结构图:每个顶点的名称由一个字符串描述,所有字符串的起始地址组织为一个数组,数组的起始地址为vetex;顶点的相邻关系保存在相邻矩阵中,其起始地址为adj,adj[i*n+j]的值为 1 表示i号顶点到j号顶点有边,为 0 表示无边,其中n是顶点个

2021-12-09 15:59:43 12323 6

原创 二叉树的应用—Huffman编码与译码 哈夫曼树

实验五:二叉树的应用—Huffman编码与译码实验目的:熟练掌握二叉树的基本操作操作,应用二叉树的结构解决实际问题,熟练掌握Huffman树和Huffman编码的构造方法。实验内容:设计实现Huffman树的创建算法,并利用Huffman树进行编码和译码。要求:1.在“Huffman编码“基础上的实现译码操作如输入“10010”译出相应的字符。 2.选做:(1)增加统计原文中各字符权值的功能,(2)将原文进行编码。代码阅读:表达式树的创建与求值。//算法5.11 根据赫夫曼树求赫夫曼

2021-12-05 15:27:08 2883 1

原创 KMP算法实验上机 串的基本操作实现

kmp算法/***字符串匹配算法***/#include<cstring>#include<iostream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;#define MAXSTRLEN 255 //用户可在255以内定义最长串长typedef char SString[MAXSTRLEN+1]; //0号单元存放串的长度.

2021-11-28 18:07:41 463

原创 分类统计方法填缺1统计串S中字符的种类和个数

/*统计串S中字符的种类和个数*/#include<cstring>#include<iostream>using namespace std;void count()//统计输入字符串中数字字符和字母字符的个数。{ int i,num[36]; char ch; for (i=0;i<36;i++) num[i]=0; while ((ch=getchar())!='#') { if('0'<=ch&&ch<='9.

2021-11-28 18:04:24 162

原创 分类统计方法填缺2统计串S中字符的种类和个数

/*统计串S中字符的种类和个数*/#include<cstring>#include<iostream>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;#define MAXSTRLEN 255 //用户可在255以内定义最长串长//typedef char SString[MAXSTRLEN+1]; //0号单元存放串的长度t.

2021-11-28 18:03:38 161

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除