自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 {数据结构课程设计}校园导游的多功能实现

头文件#define MAXV 100//最大顶点个数#define INF 32767//INF表示∞#include#includeusing namespace std;#include#include#include#include typedef int InfoType;/*定义校园景点信息*/typedef struct{ int no;//校园景

2015-12-30 09:07:31 1601 9

原创 学期总结

本学期,作为一名计算机专业学生,完成了其基本素养养成之《数据结构》。因为之前没有概念,所以开课前认定凭借名字觉得这是艰难的一门课。而对于慢热的人更是这样。线性表,栈和队列,串,递归,数组和广义表,数和二叉树,图,查找,内排序是学的主要内容。        数据结构是编程的骨架,所有学的结构是前人的结晶。我们理解,根据情况应用,便是这门课的意义。未来编程空间何其广,相关课程也须认真对待。  

2015-12-18 09:48:14 738 1

原创 (第十六周项目4)英文单词的基数排序

设计一个基数排序的算法,将一组英文单词,按字典顺序排列。假设单词均由小写字母或空格构成,最长的单词有MaxLen个字母。 #include #include #include #define MaxLen 9 //单词的最大长度#define Radix 27 //基数rd为27,分别对应' ','a',…'z't

2015-12-14 16:43:52 372

原创 (第十六周项目3)归并排序算法的改进

采用归并排序、快速排序等高效算法进行排序,当数据元素较少时(如n≤64),经常直接使用直接插入排序算法等高复杂度的算法。这样做,会带来一定的好处,例如归并排序减少分配、回收临时存储区域的频次,快速排序减少递归层次等。试按上面的思路,重新实现归并排序算法。#include #include #include #include #define MinLength 64

2015-12-14 16:41:08 317

原创 (第十六周项目2)大数据集上排序算法性能的体验

设计一个函数,产生一个至少5万条记录的数据集合。在同一数据集上,用直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序等算法进行排序,记录所需要的时间,经过对比,得到对复杂度不同的各种算法在运行时间方面的感性认识。提示1:这一项目需要整合多种排序算法,可以考虑先建设排序算法库,作为我们这门课算法库的收官之作; 提示2:本项目旨在获得对于复杂度不同算法的感性认识,由于数

2015-12-14 16:36:52 365

原创 (第十六周项目1)验证算法

用序列{57, 40, 38, 11, 13, 34, 48, 75, 6, 19, 9, 7}作为测试数据,运行并本周视频中所讲过的算法对应 程序,观察运行结果并深刻领会算法的思路和实现方法:(1)直接插入排序;(2)希尔排序;(3)冒泡排序;(4)快速排序;(5)直接选择排序;(6)堆排序;(7)归并排序;(8)基数排序。(1)1.直接插入排序#include #define

2015-12-14 16:24:48 375

原创 (第十五周项目3)B-树的基本操作(选看)

实现B-树的基本操作。基于序列{4, 9, 0, 1, 8, 6, 3, 5, 2, 7}完成测试。 (1)创建对应的3阶B-树b,用括号法输出b树。 (2)从b中分别删除关键字为8和1的节点,用括号法输出删除节点后的b树。 #include #include #define MAXM 10 //定义B-树的最大的阶数typedef

2015-12-14 16:22:56 288

原创 (第十五周项目2)用哈希法组织关键字

已知一个关键字序列为if、while、for、case、do、break、else、struct、union、int、double、float、char、long、bool,共15个字符串,哈希函数H(key)为关键字的第一个字母在字母表中的序号,哈希表的表长为26。   (1)若处理冲突的方法采用线性探测法,请设计算法,输出每个关键字对应的H(key),输出哈希表,并求成功情况下的平均查找长

2015-12-14 16:19:36 307

原创 (第十五周项目1)验证算法

运行并本周视频中所讲过的算法,观察结果并领会算法。 1、认真阅读并验证哈希表实施查找的相关算法,写程序建立序列{16, 74, 60, 43, 54, 90, 46, 31, 29, 88, 77}的哈希表,装填因子定为0.8,哈希函数为h(k)=key%p,p=11,采用线性探查法解决冲突。测试中:(1)输出建立的哈希表; (2)完成关键字为29的元素的查找; (3)在上述哈

2015-12-14 16:16:24 281

原创 (第十四周项目3)是否二叉排序树

设计一个算法,判断给定的二叉树是否是二叉排序树。 #include #include #define MaxSize 100typedef int KeyType; //定义关键字类型typedef char InfoType;typedef struct node //记录类型{ Key

2015-12-05 18:30:04 337

原创 (第十四周项目2)二叉树排序树中查找的路径

设计一个算法,输出在二叉排序中查找时查找某个关键字经过的路径。 #include #include #define MaxSize 100typedef int KeyType; //定义关键字类型typedef char InfoType;typedef struct node //记录类型{

2015-12-05 18:27:55 316

原创 (第十四周项目1)验证算法

运行并本周视频中所讲过的算法,观察结果并领会算法。 1、认真阅读并验证折半查找算法。请用有序表{12,18,24,35,47,50,62,83,90,115,134}作为测试序列,分别对查找90、47、100进行测试。2、认真阅读并验证分块查找算法。请用22,4,23,11,20,2,15,13,30,45,26,34,29,35,26,36,55,98,56, 74,61,90,

2015-12-05 18:19:01 457

原创 (第十三周项目)验证算法

运行并本周视频中所讲过的算法,观察结果并领会算法。 (1)Prim算法的验证(使用图1作为测试用例) (图一)#include #include #include "graph.h"void Prim(MGraph g,int v){ int lowcost[MAXV]; //顶点i是否在U中 int min; int

2015-12-04 09:21:00 464

原创 (第十二周项目5)迷宫问题之图深度优先遍历解法

设计一个程序,采用深度优先遍历算法的思路,解决迷宫问题。   (1)建立迷宫对应的图数据结构,并建立其邻接表表示。   (2)采用深度优先遍历的思路设计算法,输出从入口(1,1)点到出口(M,N)的所有迷宫路径。将迷宫中的每一格作为一个顶点,相邻格子可以到达,则对应的顶点之间存在边相连。 例如下面的迷宫。 在使用数组表示时,用0表示格子是空地,用1表示格子处是墙,对应的矩阵

2015-12-04 08:37:12 472 1

原创 (第十二周项目4)利用遍历思想求解图问题

(1)设计一个算法,判断顶点u到v是否有简单路径 (2)设计一个算法输出图G中从顶点u到v的一条简单路径(设计测试图时,保证图G中从顶点u到v至少有一条简单路径)。 (3)输出从顶点u到v的所有简单路径。 (4)输出图G中从顶点u到v的长度为s的所有简单路径。 (5)求图中通过某顶点k的所有简单回路(若存在) (6)求不带权连通图G中从顶点u到顶点v的一条最短路径。 (

2015-12-04 08:25:11 377

原创 (第十二周项目3)图遍历算法实现

实现图遍历算法,分别输出如下图结构的深度优先(DFS)遍历序列和广度优先遍历(BFS)序列。1、深度优先遍历——DFS#include #include #include "graph.h"int visited[MAXV];void DFS(ALGraph *G, int v){ ArcNode *p; int w; visited[

2015-12-04 08:20:20 301

原创 (第十二周项目2)操作用邻接表存储的图

假设图G采用邻接表存储,分别设计实现以下要求的算法: (1)输出出图G中每个顶点的出度; (2)求出图G中出度最大的一个顶点,输出该顶点编号; (3)计算图G中出度为0的顶点数; (4)判断图G中是否存在边。 提示:(1)分别设计函数实现算法;(2)不要全部实现完再测试,而是实现一个,测试一个;(3)请利用图算法库;(4)若将本项目中图G的存储结构改为邻接矩阵,相关操作又如

2015-12-04 08:16:57 440

原创 (第十二周项目1)图基本算法库

定义图的邻接矩阵和邻接表存储结构,实现其基本运算,并完成测试。 要求: 1、头文件graph.h中定义相关的数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:void ArrayToMat(int *Arr, int n, MGraph &g); //用普通数组构造图的邻接矩阵void ArrayToList(int *Arr, int n, ALGraph *&);

2015-12-04 08:12:22 324

原创 (第十一周项目2)用二叉树求解代数表达式

用二叉树来表示代数表达式,树的每一个分支节点代表一个运算符,每一个叶子节点代表一个运算数(为简化,只支持二目运算的+、-、*、/,不加括号,运算数也只是一位的数字字符。本项目只考虑输入合乎以上规则的情况)。请设计算法,(1)根据形如“1+2∗3−4/5 ”的字符串代表的表达式,构造出对应的二叉树(如图),用后序遍历的思路计算表达式的值时,能体现出先乘除后加减的规则;(2)对构造出的二叉树,

2015-12-01 21:05:41 523

原创 (第十一周项目1)二叉树算法验证

运行并重复测试教学内容中涉及的算法。改变测试数据进行重复测试的意义在于,可以从更多角度体会算法,以达到逐渐掌握算法的程度。使用你的测试数据,并展示测试结果,观察运行结果,以此来领会算法。(1)层次遍历算法的验证#include #include "btree.h"void LevelOrder(BTNode *b){ BTNode *p; BTNode

2015-12-01 20:55:36 483

原创 (第十周项目3)利用二叉树遍历思想解决问题

假设二叉树采用二叉链存储结构存储,分别实现以下算法,并在程序中完成测试: (1)计算二叉树节点个数; (2)输出所有叶子节点; (3)求二叉树b的叶子节点个数; (4)设计一个算法Level(b,x,h),返回二叉链b中data值为x的节点的层数。 (5)判断二叉树是否相似(关于二叉树t1和t2相似的判断:①t1和t2都是空的二叉树,相似;②t1和t2之一为空,另一不为空,则不

2015-11-30 16:27:04 330

原创 (第十周项目2)二叉树遍历的递归算法

实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 请利用二叉树算法库。#include #include "btree.h"void PreOrder(BTNode *b) //先序遍历的递归算法{ if (b!=NULL) {

2015-11-30 16:22:48 290

原创 (第十周项目1)二叉树算法库

定义二叉树的链式存储结构,实现其基本运算,并完成测试。 要求: 1、头文件btree.h中定义数据结构并声明用于完成基本运算的函数。对应基本运算的函数包括:void CreateBTNode(BTNode *&b,char *str); //由str串创建二叉链BTNode *FindNode(BTNode *b,ElemType x); //返回data域为

2015-11-30 16:16:07 586

原创 (第九周项目4)广义表算法库及应用

(1)建立广义表算法库,包括: ① 头文glist.h,定义数据类型,声明函数; ② 源文件glist.cpp,实现广义表的基本运算,主要算法包括:int GLLength(GLNode *g); //求广义表g的长度int GLDepth(GLNode *g); //求广义表g的深度GLNode *CreateGL(char *&s); //返回由括号表示法

2015-11-30 08:55:40 545

原创 (第九周项目3)稀疏矩阵的三元组表示的实现及应用

(1)建立稀疏矩阵三元组表示的算法库,包括: ① 头文tup.h,定义数据类型,声明函数; ② 源文件tup.cpp,实现稀疏矩阵三元组表示的基本运算,主要算法包括:void CreatMat(TSMatrix &t,ElemType A[M][N]); //从一个二维稀疏矩阵创建其三元组表示bool Value(TSMatrix &t,ElemType x,int i,int j

2015-11-30 08:41:59 465

原创 (第九周项目2)对称矩阵压缩存储的实现与应用

(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, int i, int j);//将e赋值给对应二维数组元素A[i][j],

2015-11-30 08:38:09 439

原创 (第九周项目1)猴子选大王(数组版)

一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,最后一只出圈的猴子为大王。输入m和n,输出猴子离开圈子的顺序,从中也可以看出最后为大王是几号猴子。 要求采用数组作为存储结构完成。在一个数组中,数组中用1表示猴子在圈中,用0表示猴子已经出圈,数组下标对应与猴子编号对应(例如数组元素p[0]值为1,

2015-11-30 08:29:15 359

原创 (第八周项目5)计数的模式匹配

采用顺序结构存储串,编写一个算法计算指定子串在一个字符串中出现的次数,如果该子串不出现则为0。提示:无论BF模式匹配算法,还是KMP算法,都是在找到子串substr后就退出了。解决这个问题,要查找完整个字符串,并将出现的次数记下来。改造这两个算法吧。#include #include "sqString.h"int str_count(SqString s,SqString

2015-11-28 20:50:46 384

原创 (第八周项目4)字符串加密

一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为: abcdefghijklmnopqrstuvwxyzngzqtcobmuhelkpdawxfyivrsj则字符串“lao he jiao shu ju jie gou”被加密为“enp bt umnp xby uy umt opy”。 设计一个程序,实现加密、解密算法,将输入的文本进行加密后输出,然后进行

2015-11-28 20:48:01 344

原创 (第八周项目3)顺序串算法

采用顺序存储方式存储串,实现下列算法并测试:   (1)试编写算法实现将字符串S中所有值为c1的字符换成值为c2的字符: void Trans(SqString *&s, char c1, char c2);   (2)试编写算法,实现将已知字符串所有字符倒过来重新排列。如ABCDEF改为FEDCBA。 void Invert(SqString &s)   (3)从串s

2015-11-28 20:45:40 355

原创 (第八周项目2)建立链串的算法库

定义链串的存储结构,实现串的基本运算,并完成测试。1.头文件typedef struct snode{ char data; struct snode *next;} LiString;void StrAssign(LiString *&s,char cstr[]); //字符串常量cstr赋给串svoid StrCopy(LiString *&s,LiStr

2015-11-28 20:42:27 354

原创 (第八周项目1)建立顺序串的算法库

第八周(串)总汇定义顺序串的存储结构,实现其基本运算,并完成测试。 (1)建立串s:abcdefghijklmn和串s1:123 (2)输出串s和s1 (3)输出串s的长度 (4)在串s的第9个字符位置插入串s1而产生串s2 (5)输出串s2 (6)删除串s第2个字符开始的5个字符而产生串s2 (7)输出串s2 (8)将串s第2个字符开始的5个字符替换成

2015-11-28 20:37:49 300

原创 (第七周项目6)停车场模拟

设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有)。汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开。若车场内已停满n辆汽车,则后来的汽车只能在门外的候车场上等候,一旦有车开走,则排在候车场上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路(假定停车场内设有供车辆进出的便道,

2015-11-20 09:30:17 437

原创 (第七周项目5)排队看病模拟

编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事: (1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。 (2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。 要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能: (1)排队——输入排队病人的病历号,加入到病人排队队列中。 (2)就诊——病人排队队列中最前面的病人就

2015-11-20 09:29:00 677

原创 (第七周项目4)队列数组

创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个正整数,以数字0作为结束。设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中。最后输出所有的非空队列。要求将队列处理成链式队列,使用链式队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。 设程序运行时输入:70 59 90 7

2015-11-20 09:23:09 279

原创 (第七周项目3)负数把正数赶出队列

设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai<0时,将队首元素出队,当ai=0时,表示输入结束。要求将队列处理成环形队列,使用环形队列算法库中定义的数据类型及算法,程序中只包括一个函数(main函数),入队和出队等操作直接在main函数中调用即可。当进队出队异常(如队满)时,要打印出错信息。 #include #include #in

2015-11-20 09:16:24 428

原创 (第七周项目2)建立链队算法库

定义链队存储结构,实现其基本运算,并完成测试。 1.头文件typedef char ElemType;typedef struct qnode{ ElemType data; struct qnode *next;} QNode; //链队数据结点类型定义typedef struct{ QNode *front;

2015-11-20 09:14:26 456

原创 (第七周项目1)建立顺序环形队列算法库

定义顺序环形队列存储结构,实现其基本运算,并完成测试。 main函数包括:(1)初始化队列q (2)依次进队列元素a,b,c (3)判断队列是否为空 (4)出队一个元素 (5)输出队列中元素个数 (6)依次进队列元素d,e,f (7)输出队列中元素个数 (8)将队列中所有元素删除,并输出序列 (9)释放队列1.头文件#define MaxSize 5typedef char Ele

2015-11-20 09:07:51 382

原创 (第六周项目5)后缀表达式

利用sqstack.h中栈的基本运算,实现将一个中缀表达式转换为对应的后缀表达式的算法。例如,输入(56-20)/(4+2),输出后缀表达式::56#20#-4#2#+/要求在数字后加##include #include #include "sqstack.h"#define MaxOp 7struct //设定运算符优先级{ char ch; //运算

2015-11-16 16:42:52 285

原创 (第六周项目4)数制转换

把十进制的整数转换为二至九之间的任一进制数输出。请利用栈设计算法,并实现程序。提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。逆序,后进先出。#include #include "sqstack.h"void MultiBaseOutput (int number,int base){ //假设num

2015-11-16 16:38:44 412

空空如也

空空如也

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

TA关注的人

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