
数据结构学习项目
Zzfj丶
这个作者很懒,什么都没留下…
展开
-
课程设计 广度优先探索—迷宫问题
问题及代码:文件名称:main.cpp maze.cpp maze.h作者:郑孚嘉问题描述:实现生成迷宫(随机生成,用户输入数据生成,从文本中读取数据生成),输出迷宫(图案方式),探索迷宫路径(最短路径),输出迷宫路径(图案方式)代码:maze.h/***********************************************文件名称:ma原创 2015-12-25 13:32:09 · 754 阅读 · 1 评论 -
第12周项目1 图基本算法库
文件名称:main.cpp graph.cpp graph.h作者:郑孚嘉问题描述:定义图的邻接矩阵和邻接表存储结构,实现其基本运算,并完成测试。 要求: 1、头文件graph.h中定义相关的数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:void ArrayToMat(int *Arr,int n, MGraph &g); //用普通数组构造图的邻接原创 2015-12-14 09:55:41 · 461 阅读 · 0 评论 -
第12周项目4 利用遍历思想求解图问题
问题及代码:文件名称:main.cpp graph.cpp graph.h作者:郑孚嘉问题描述:假设图G采用邻接表存储,分别设计实现以下要求的算法,要求用区别于示例中的图进行多次测试,通过观察输出值,掌握相关问题的处理方法。 (1)设计一个算法,判断顶点u到v是否有简单路径 (2)设计一个算法输出图G中从顶点u到v的一条简单路径(设计测试图时,保证图G中从顶点u到v至少原创 2015-12-14 11:05:35 · 359 阅读 · 0 评论 -
第10周项目2 二叉树遍历的递归算法
问题及代码:文件:main.cpp btree.cpp btree.h作者:郑孚嘉问题描述:实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。请利用二叉树算法库。 代码:main.cpp#include #include "btree.h"void P原创 2015-11-27 08:19:21 · 318 阅读 · 0 评论 -
第9周项目4 广义表算法库及应用
问题及代码:文件名:main.cpp glist.cpp glist.h作者:郑孚嘉问题描述:(1)建立广义表算法库,包括: ① 头文glist.h,定义数据类型,声明函数; ② 源文件glist.cpp,实现广义表的基本运算,主要算法包括:int GLLength(GLNode *g);//求广义表g的长度int GLDepth(GLNode *g);//原创 2015-11-16 16:56:55 · 337 阅读 · 0 评论 -
第11周项目1 二叉树算法验证
问题及代码:文件名称:main.cpp btree.h btree.cpp作者:郑孚嘉问题描述:运行并重复测试教学内容中涉及的算法。改变测试数据进行重复测试的意义在于,可以从更多角度体会算法,以达到逐渐掌握算法的程度。使用你的测试数据,并展示测试结果,观察运行结果,以此来领会算法。(1)层次遍历算法的验证 (2)二叉树构造算法的验证 (3)中序线索化二叉树的算法验证原创 2015-12-07 16:15:42 · 362 阅读 · 0 评论 -
第8周项目4 字符串加密
问题及代码:文件名:main.cpp SqString.cpp SqString.h作者:郑孚嘉问题描述:一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为:abcdefghijklmnopqrstuvwxyzngzqtcobmuhelkpdawxfyivrsj则字符串“lao he jiao shu ju jie gou”被加密为“enp bt umn原创 2015-11-02 16:57:10 · 347 阅读 · 0 评论 -
第8周项目3 顺序串算法
问题及代码:文件名称:main.cpp SqString.cpp SqString.h作者:郑孚嘉问题描述:采用顺序存储方式存储串,实现下列算法并测试: (1)试编写算法实现将字符串S中所有值为c1的字符换成值为c2的字符: void Trans(SqString *&s, char c1, char c2); (2)试编写算法,实现将已知字符串所有字符倒过来重新排列。原创 2015-11-02 16:12:17 · 355 阅读 · 0 评论 -
第11周项目2 用二叉树求解代数表达式
文件名称:main.cpp btree.cpp btree.h作者:郑孚嘉问题描述:用二叉树来表示代数表达式,树的每一个分支节点代表一个运算符,每一个叶子节点代表一个运算数(为简化,只支持二目运算的+、-、*、/,不加括号,运算数也只是一位的数字字符。本项目只考虑输入合乎以上规则的情况)。请设计算法,(1)根据 1+2*3-4/5 的字符串代表的表达式,构造出对应的二叉树(如图),用后原创 2015-12-11 09:16:35 · 432 阅读 · 0 评论 -
第4周项目6 多项式求和
以多项式p(x)=−3.4x10−9.6x8+7.2x2+x 为例,存储这个多项式的数组如下图: 可以看出,这种方案适合对某些多项式的处理。但是,在处理一些次数高但项数少的多项式时,存在浪费空间的现象,会有很多闲置的0。问题及代码:文件名称:main.cpp作者:郑孚嘉问题描述:用单链表存储一元多项式,并实现两个多项式的加法代码:#include #inc原创 2015-10-16 08:22:13 · 383 阅读 · 0 评论 -
第8周项目2 建立链串的算法库
问题及代码:文件名称:main.cpp liString.cpp liString.h作者:郑孚嘉问题描述:1、头文件liString.h中定义数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:void StrAssign(LiString *&s,char cstr[]); //字符串常量cstr赋给串svoid StrCopy(LiString *&原创 2015-10-30 09:03:50 · 293 阅读 · 0 评论 -
第10周项目1 二叉树算法库
问题及代码:文件名:main.cpp btree.cpp btree.h作者:郑孚嘉问题描述:定义二叉树的链式存储结构,实现其基本运算,并完成测试。 要求: 1、头文件btree.h中定义数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:void CreateBTNode(BTNode *&b,char *str); //由str串创建二叉链BTNo原创 2015-11-20 08:40:45 · 654 阅读 · 0 评论 -
第12周项目2 操作用邻接表存储的图
问题及代码:文件名称:main.cpp graph.cpp graph.h作者:郑孚嘉问题描述:假设图G采用邻接表存储,分别设计实现以下要求的算法: (1)输出出图G中每个顶点的出度; (2)求出图G中出度最大的一个顶点,输出该顶点编号; (3)计算图G中出度为0的顶点数; (4)判断图G中是否存在。 利用下图作为测试用图,输出结果。原创 2015-12-14 10:19:27 · 300 阅读 · 0 评论 -
第12周项目3 图遍历算法实现
问题及代码:文件名称:main.cpp graph.cpp graph.h作者:郑孚嘉问题描述:实现图遍历算法,分别输出如下图结构的深度优先(DFS)遍历序列和广度优先遍历(BFS)序列。请利用图算法库代码:graph.h graph.cpp请参考1)深度遍历main.cpp#include #include #include "g原创 2015-12-14 10:36:37 · 285 阅读 · 0 评论 -
第12周项目5 迷宫问题之图深度优先遍历解法
问题及代码:文件名称:main.cpp作者:郑孚嘉问题描述:设计一个程序,采用深度优先遍历算法的思路,解决迷宫问题。 (1)建立迷宫对应的图数据结构,并建立其邻接表表示。 (2)采用深度优先遍历的思路设计算法,输出从入口(1,1)点到出口(M,N)的所有迷宫路径。将迷宫中的每一格作为一个顶点,相邻格子可以到达,则对应的顶点之间存在边相连。 例如,下面的迷宫原创 2015-12-14 11:32:46 · 335 阅读 · 0 评论 -
第14周项目6 是否二叉排序树?
问题及代码:文件名称:main.cpp作者:郑孚嘉问题描述:设计一个算法,判断给定的二叉树是否是二叉排序树。代码:#include #include #define MaxSize 100typedef int KeyType; //定义关键字类型typedef char InfoType;typedef struct node原创 2015-12-19 12:51:07 · 341 阅读 · 0 评论 -
第14周项目5 二叉树排序树中查找的路径
问题及代码:文件名称:main.cpp作者:郑孚嘉问题描述:设计一个算法,输出在二叉排序中查找时查找某个关键字经过的路径。代码:#include #include #define MaxSize 100typedef int KeyType; //定义关键字类型typedef char InfoType;typedef s原创 2015-12-19 12:39:07 · 347 阅读 · 0 评论 -
第14周项目3 验证算法—二叉排序树相关算法
问题及代码:文件名称:main.cpp作者:郑孚嘉问题描述:认真阅读并验证二叉排序树相关算法。 (1)由整数序列{43,52,75,24,10,38,67,55,63,60}构造二叉排序树; (2)输出用括号法表示的二叉排序树; (3)用递归算法和非递归算法查找关键字55; (4)分别删除43和55,输出删除后用括号法表示的二叉排序树。代码:main.cpp原创 2015-12-17 14:48:16 · 397 阅读 · 0 评论 -
第13周项目3 算法验证—Floyd算法
问题及代码:文件名称:main.cpp graph.cpp graph.h作者:郑孚嘉问题描述:每对顶点之间的最短路径代码:main.cpp#include #include #include "graph.h"#define MaxSize 100void Ppath(int path[][MAXV],int i,int j) //前向递归查找路径上的顶点原创 2015-12-17 13:03:37 · 348 阅读 · 0 评论 -
第14周项目4 验证算法—平衡二叉树相关算法
问题及代码:文件名称:main.cpp作者:郑孚嘉问题描述:认真阅读并验证平衡二叉树相关算法。 (1)由整数序列{43,52,75,24,10,38,67,55,63,60}构造AVL树; (2)输出用括号法表示的AVL树; (3)查找关键字55; (4)分别删除43和55,输出删除后用括号法表示的二叉排序树。代码:main.cpp#include #in原创 2015-12-17 15:09:31 · 477 阅读 · 0 评论 -
第13周项目2 算法验证—Dijkstra算法
问题及代码:文件名称:main.cpp graph.cpp graph.h作者:郑孚嘉问题描述:Dijkstra算法的验证( 从一个顶点到其他各定点的最短路径 )代码:main.cpp#include #include #include "graph.h"#define MaxSize 100void Ppath(int path[],int i,int v)原创 2015-12-17 12:53:19 · 342 阅读 · 0 评论 -
第14周项目1 验证算法—折半查找算法
问题及代码:文件名称:main.cpp作者:郑孚嘉问题描述:运行并本周视频中所讲过的算法,观察结果并领会算法。 认真阅读并验证折半查找算法。请用有序表{1,3,9,12,32,41,45,62,75,77}作为测试序列,对查找75进行测试。代码:1)折半查找main.cpp#include #define MAXL 100typedef int KeyT原创 2015-12-17 13:31:09 · 400 阅读 · 0 评论 -
第13周项目1 算法验证—Prim算法+Kruskal算法
问题及代码:文件名称:main.cpp graph.cpp graph.h作者:郑孚嘉问题描述:(1)Prim算法的验证(使用图1作为测试用例) (2)Kruskal算法的验证(使用图1作为测试用例) 代码:(1)最小生成树的普里姆算法main.cpp#include #include #include "graph.h"void Prim(MG原创 2015-12-17 12:34:32 · 387 阅读 · 0 评论 -
第14周项目2 算法验证—分块查找算法
问题及代码:文件名称:main.cpp作者:郑孚嘉问题描述:认真阅读并验证分块查找算法。请用22,4,23,11,20,2,15,13,30,45,26,34,29,35,26,36,55,98,56, 74,61,90,80,96,127,158,116,114,128,113,115,102,184,211,243,188,187,218,195,210,279,307,492原创 2015-12-17 13:43:34 · 551 阅读 · 0 评论 -
第10周项目3 利用二叉树遍历思想解决问题
问题及代码:文件:main.cpp btree.cpp btree.h作者:郑孚嘉问题描述:假设二叉树采用二叉链存储结构存储,分别实现以下算法,并在程序中完成测试: (1)计算二叉树节点个数; (2)输出所有叶子节点; (3)求二叉树b的叶子节点个数; (4)设计一个算法Level(b,x,h),返回二叉链b中data值为x的节点的层数。 (5)判断二叉树是否相原创 2015-11-27 08:27:52 · 318 阅读 · 0 评论 -
第9周项目3 稀疏矩阵的三元组表示的实现及应用
问题及代码:文件名称:main.cpp tup.h tup.cpp作者:郑孚嘉问题描述:(1)建立稀疏矩阵三元组表示的算法库,包括: ① 头文tup.h,定义数据类型,声明函数; ② 源文件tup.cpp,实现稀疏矩阵三元组表示的基本运算,主要算法包括:void CreatMat(TSMatrix &t,ElemType A[M][N]);//从一个二维稀疏矩阵原创 2015-11-16 16:16:02 · 393 阅读 · 0 评论 -
第8周项目1 建立顺序串的算法库
问题及代码:文件名称:main.cpp sqString.cpp sqString.h作者:郑孚嘉问题描述:定义顺序串的存储结构,实现其基本运算,并完成测试。 要求: 1、头文件sqString.h中定义数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:void StrAssign(SqString &s,char cstr[]); //字符串常量cs原创 2015-10-30 08:09:02 · 394 阅读 · 0 评论 -
第3周项目2 建设“顺序表”算法库
问题及描述:1)main.cpp/* *文件名称:main.cpp,list.cpp,list.h *作者:郑孚嘉 *问题描述:建设“顺序表”算法库 领会“0207将算法变程序”部分建议的方法,建设自己的专业基础设施算法库。这一周,建的是顺序表的算法库。 算法库包括两个文件: 头文件:list.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明; 源文件:lis原创 2015-09-18 12:46:05 · 443 阅读 · 0 评论 -
第9周项目1 猴子选大王(数组版)
问题及代码:文件名称:main.cpp作者:郑孚嘉问题描述:一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,最后一只出圈的猴子为大王。输入m和n,输出猴子离开圈子的顺序,从中也可以看出最后为大王是几号猴子。 要求采用数组作为存储结构完成。代码:#include using nam原创 2015-11-06 09:10:46 · 604 阅读 · 0 评论 -
第8周项目5 计数的模式匹配
问题及代码:文件名称:main.cpp sqString.cpp sqString.h作者:郑孚嘉问题描述:采用顺序结构存储串,编写一个算法计算指定子串在一个字符串中出现的次数,如果该子串不出现则为0。提示:无论BF模式匹配算法,还是KMP算法,都是在找到子串substr后就退出了。解决这个问题,要查找完整个字符串,并将出现的次数记下来。改造这两个算法吧。代码:main原创 2015-11-06 08:51:12 · 321 阅读 · 0 评论 -
第3周项目1 顺序表的基本运算
问题及代码:/* *文件名称:main.cpp *作者:郑孚嘉 *问题描述:目的是要测试“建立线性表”的算法CreateList,为查看建表的结果,需要实现“输出线性表”的算法DispList。在研习DispList中发现,要输出线性表,还要判断表是否为空,这样,实现判断线性表是否为空的算法ListEmpty成为必要。这样,再加上main函数,这个程序由4个函数构成。main函数用原创 2015-09-18 08:44:46 · 463 阅读 · 0 评论 -
第6周项目2 建立链栈算法库
问题及代码:文件名称:main.cpp listack.cpp listack.h作者:郑孚嘉问题描述: 定义链栈存储结构,实现其基本运算,并完成测试。具体要求参照项目1。 代码:1)头文件:listack.h (包含定义链栈数据结构的代码、宏定义、要实现算法的函数的声明)typedef char ElemType;typedef struct linknode原创 2015-10-19 16:26:44 · 347 阅读 · 0 评论 -
第4周项目3 单链表应用
问题及代码:/*文件名称:main.cpp linklist.h linklist.cpp *作者:郑孚嘉 *问题描述: 完成下面的应用时,除项目中给出的特殊要求,其余工作均可利用项目2完成的算法支持。 1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实原创 2015-10-05 16:34:02 · 420 阅读 · 0 评论 -
第4周项目2 建设“单链表”算法库
问题及代码:/*文件名称:main.cpp linklist.h linklist.cpp *作者:郑孚嘉 *问题描述: 算法库包括两个文件: 头文件:linklist.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明; 源文件:linklist.cpp,包含实现各种算法的函数的定义 请采用程序的多文件组织形式,建立如上的两个文件,另外再建立一个源原创 2015-10-05 16:16:57 · 361 阅读 · 0 评论 -
第6周项目1 建立顺序栈算法库
问题及代码:文件名称:main.cpp sqstack.cpp sqstack.h作者:郑孚嘉问题描述:定义顺序栈存储结构,实现其基本运算,并完成测试。 1、头文件sqstack.h中定义数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:void InitStack(SqStack *&s); //初始化栈void DestroyStack(SqStack原创 2015-10-16 08:46:30 · 483 阅读 · 0 评论 -
第2周项目3 体验复杂度(1)两种排序算法的运行时间
问题及代码:1)选择排序法:/* * 文件名称:main.cpp * 作者:郑孚嘉 * 完成日期:2015年9月14日 * 问题描述:体验O(n^2)与O(nlogn)的复杂度 * 输入描述:无 * 程序输出:排序所需要的时间 */ #include #include #include #define MAXNUM原创 2015-09-14 17:18:53 · 322 阅读 · 0 评论 -
第2周项目3 体验复杂度(2)汉诺塔
问题及代码:/* *文件名称:main.cpp *作 者:郑孚嘉 *完成日期:2015年9月14日 *问题描述:有一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则原创 2015-09-14 21:53:59 · 497 阅读 · 0 评论 -
第2周项目1 C/C++语言中函数参数传递的三种方式
问题及代码:/* * 文件名称:main.cpp * 作者:郑孚嘉 * 完成日期:2015年9月13日 * 问题描述:C语言中函数参数传递的三种方式 * 输入描述:两个待交换的整数 * 程序输出:交换后得两个整数 */#include #include using namespace std;void myswap1(int x,int y);//传值void mysw原创 2015-09-13 19:18:28 · 658 阅读 · 2 评论 -
第6周项目4 数制转换
问题及代码:文件名称:main.cpp sqstack.cpp sqstack.h作者:郑孚嘉问题描述:把十进制的整数转换为二至九之间的任一进制数输出。请利用栈设计算法,并实现程序。 提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……原创 2015-10-23 08:30:57 · 412 阅读 · 0 评论 -
第9周项目2 对称矩阵压缩存储的实现与应用
问题及代码:文件名:main.cpp作者:郑孚嘉问题描述:(1)用压缩形式存储对称矩阵,实现下面的操作并测试void Init(int *&b);//为N阶对称矩阵初始化存储数据的一维数组Bint Value(int b[], int i, int j);//返回存储在b[M]中,对应二维数组A[i][j]的值void Assign(int b[], int e,原创 2015-11-08 13:52:51 · 454 阅读 · 0 评论