- 博客(45)
- 收藏
- 关注
原创 数据结构课设--学生信息管理系统
/*************************************** *版权所有 (C)2017,renzexi*文件名称:action.h *文件标识:无 *内容摘要:定义数据和函数声明 *其他说明:无 *当前版本:V1.0 *作者:任泽西 *完成时间:20171222 *修改记录: 修改了重定义的错误*修改时间:20171222 *版本号
2017-12-22 11:06:36 2556
原创 数据结构大总结
First of all,脑子里想写出来的很多,不过碍于我的语文水平,“精炼”的短了些 emmmm....... Secondly 正文: 时间过得飞快,转眼间为期一学期的数据结构课已经接近尾声了,从陌生到了解,再从了解到熟知,这一个学期的学习成果显而易见。在学期末这个节点上,经过贺老师的提醒,觉得最后的大总结是很有必要的。 临近大二开学时,被莫名其妙的拉近一个群,然后知道
2017-12-14 10:49:33 321
原创 第十周 项目4 - 线索化二叉树(中序)
本文是数据结构基础系列(6):树和二叉树中第14课时线索二叉树的例程。#include #include #define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data; int ltag,rtag; //增加的线索标记 struct node *lch
2017-12-22 13:05:42 247
原创 第十周 项目3 - 二叉树的构造
1.由先序序列和中序序列构造二叉树定理:任何n(n≥0)个不同节点的二叉树,都可由它的中序序列和先序序列唯一地确定。证明(数学归纳法) 基础:当n=0时,二叉树为空,结论正确。 假设:设节点数小于n的任何二叉树,都可以由其先序序列和中序序列唯一地确定。 归纳:已知某棵二叉树具有n(n>0)个不同节点,其先序序列是a0a1…an−1;中序序列是b0b1…bk−1bkbk+1…bn
2017-12-22 13:03:32 262
原创 第十周 项目2 - 层次遍历算法
【二叉树的层次遍历算法】 实现二叉树的层次遍历算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 请利用二叉树算法库。[参考解答](btreee.h见算法库)#include #include "btree.h"void LevelOrder(BTNode *b){ BTNode *p;
2017-12-22 09:15:22 231
原创 第十周 项目1 - 二叉树遍历非递归算法
【二叉树遍历的非递归算法】 实现二叉树的先序、中序、后序遍历的非递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 请利用二叉树算法库。[参考解答](btreee.h见算法库)#include #include "btree.h"void PreOrder1(BTNode *b){ BTNode
2017-12-22 09:13:01 212
原创 第三周 项目1 - 顺序表的基本运算
在数据结构的学习中,掌握基本运算是一个基础性的工作。这种“抽象”级别的成果,适用于各种应用场合,也是训练计算思维的根本依托之一。 在实践性的学习路线中,实践可以分为三个层次:验证性、设计性和综合性。验证性实验是最初步和基本的的,通过验证课堂讲的、书上写的内容,加深对相关知识的理解;设计性实验锻炼的是运用某些基本知识和原理解决问题的能力;而综合性实验则达到综合运用多方面的知识,解决实际问题的
2017-12-14 11:22:14 313
原创 第四周 项目6 - 多项式求和
提示: 1、存储多项式的数据结构 多项式的通式是pn(x)=anxn+an−1xn−1+...+a1x+a0。n次多项式共有n+1项。直观地,可以定义一个数组来存储这n+1个系数。以多项式p(x)=−3.4x10−9.6x8+7.2x2+x为例,存储这个多项式的数组如下图: 这里写图片描述 可以看出,这种方案适合对某些多项式的处理。但是,在处理一些次数高但项
2017-12-14 11:21:18 287
原创 第七周 项目3 - 负数把正数赶出队列
设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai[cpp] view plain copy[参考解答] 说明——使用本文所用的环形队列的算法库(sqqueue.h) #include #include #include "sqqueue.h"
2017-12-14 11:13:36 240
原创 第八周(1) 项目3-顺序串算法
采用顺序存储方式存储串,实现下列算法并测试: (1)试编写算法实现将字符串S中所有值为c1的字符换成值为c2的字符: void Trans(SqString *&s, char c1, char c2); (2)试编写算法,实现将已知字符串所有字符倒过来重新排列。如ABCDEF改为FEDCBA。 void Invert(SqString &s) (3)从串s中删除其值等于c的所
2017-12-14 11:02:04 459
原创 第八周(1) 项目1 - 建立顺序串的算法库
顺序串算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqString.h,包含定义顺序串数据结构的代码、宏定义、要实现算法的函数的声明;[cpp] view plain copy#ifndef SqString_H_INCLUDED #define SqString_H_INCLUDED #
2017-12-14 10:52:36 214
原创 第八周(1) 项目5 - 计数的模式匹配
【项目 - 计数的模式匹配】 采用顺序结构存储串,编写一个算法计算指定子串在一个字符串中出现的次数,如果该子串不出现则为0。提示:无论BF模式匹配算法,还是KMP算法,都是在找到子串substr后就退出了。解决这个问题,要查找完整个字符串,并将出现的次数记下来。改造这两个算法吧。 改造BF算法完成求解。#include #include "sqString.
2017-12-14 10:13:32 204
原创 第八周(1) 项目2 - 建立链串的算法库
链串算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:liString.h,包含定义链串数据结构的代码、宏定义、要实现算法的函数的声明;[cpp] view plain copy#ifndef LISTRING_H_INCLUDED #define LISTRING_H_INCLUDED typedef
2017-12-13 11:05:48 278
原创 第七周 项目6 - 停车场模拟
设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有)。汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开。若车场内已停满n辆汽车,则后来的汽车只能在门外的候车场上等候,一旦有车开走,则排在候车场上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路(假定停车场内设有供车辆进出的便道,
2017-12-13 11:00:30 294
原创 第五周 项目3 - 括号的匹配
【项目 - 括号的匹配】 假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*2+{[3]}-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。提示: (1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为
2017-12-13 10:57:47 329
原创 第三周 项目3 求集合并集
假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中。提示: (1)除了实现unnionList函数外,还需要在main函数中设计代码,调用unionList进行
2017-12-13 10:54:36 279
原创 第二周 项目3—汉诺塔
#include #define discCount 4 long move(int, char, char,char); int main() { long count; count=move(discCount,'A','B','C'); printf("%d个盘子需要移动%ld次\n", discCount, count);
2017-12-13 10:52:18 206
原创 第十一周 【项目5 - 迷宫问题之图深度优先遍历解法】
【项目 - 迷宫问题之图深度优先遍历解法】 设计一个程序,采用深度优先遍历算法的思路,解决迷宫问题。 (1)建立迷宫对应的图数据结构,并建立其邻接表表示。 (2)采用深度优先遍历的思路设计算法,输出从入口(1,1)点到出口(M,N)的所有迷宫路径。[模型建立] 将迷宫中的每一格作为一个顶点,相邻格子可以到达,则对应的顶点之间存在边相连。 例如,下面的
2017-12-07 10:27:31 228
原创 第十一周 纸上谈兵:“知原理”检验题目
1、设图的邻接矩阵为,则该图为__。 A. 有向图 B. 无向图 C. 强连通图 D. 完全图 2、已知一个图,如图1所示,则从顶点a出发按深度优先遍历则可以得到的一种顶点序列为__。 A. a,b,e,c,d,f B. a,c,f,e,b,d C. a,e,b,c,f,d D. a,e,d,f,c,b (图1) 3、画出图1的邻接矩阵和邻接表存储的示意
2017-12-07 10:26:42 363
原创 第十二周 Prim算法的验证
#include #include #include "graph.h"void Prim(MGraph g,int v){ int lowcost[MAXV]; //顶点i是否在U中 int min; int closest[MAXV],i,j,k; for (i=0; i//给lowcost[]和closest[]置初值 {
2017-12-07 10:24:59 212
原创 第十二周 Kruskal算法的验证
(图1) #include #include #include "graph.h"#define MaxSize 100typedef struct{ int u; //边的起始顶点 int v; //边的终止顶点 int w; //边的权值} Edge;void InsertSort(Edge E[],int
2017-12-07 10:22:36 184
原创 第十二周 Dijkstra算法的验证
#include #include #include "graph.h"#define MaxSize 100void Ppath(int path[],int i,int v) //前向递归查找路径上的顶点{ int k; k=path[i]; if (k==v) return; //找到了起点则返回 Ppath(path,k,v)
2017-12-07 10:18:57 148
原创 第十二周 Floyd算法验证
[Floyd算法实现] (程序中graph.h是图存储结构的“算法库”中的头文件,详情请单击链接…)#include #include #include "graph.h"#define MaxSize 100void Ppath(int path[][MAXV],int i,int j) //前向递归查找路径上的顶点{ int k; k=path[i][j];
2017-12-07 10:17:46 148
原创 第十二周 拓扑排序算法验证
[代码]#include #include #include "graph.h"void TopSort(ALGraph *G){ int i,j; int St[MAXV],top=-1; //栈St的指针为top ArcNode *p; for (i=0; in; i++) //入度置初值0
2017-12-07 10:15:29 153
原创 第十三周 【项目1 - 验证算法】
1、认真阅读并验证折半查找算法。请用有序表{12,18,24,35,47,50,62,83,90,115,134}作为测试序列,分别对查找90、47、100进行测试折半查找#include #define MAXL 100typedef int KeyType;typedef char InfoType[10];typedef struct{ KeyType
2017-12-07 10:13:34 257
原创 第十三周 【项目2 - 二叉树排序树中查找的路径】
【项目 - 二叉树排序树中查找的路径】 设计一个算法,输出在二叉排序中查找时查找某个关键字经过的路径。[参考解答] 专为本项目设计的算法体现在函数int SearchBST(…)和void SearchResult()中。#include #include #define MaxSize 100typedef int KeyType;
2017-12-07 10:12:13 166
原创 第十三周 【项目3 - 是否二叉排序树?】
【项目 - 是否二叉排序树?】 设计一个算法,判断给定的二叉树是否是二叉排序树。[参考解答] int JudgeBST()是设计的算法对应的实现。#include #include #define MaxSize 100typedef int KeyType; //定义关键字类型typedef char InfoType;type
2017-12-07 10:07:09 142
原创 第九周 【项目3 - 利用二叉树遍历思想解决问题】
【利用二叉树遍历思想解决问题】 假设二叉树采用二叉链存储结构存储,分别实现以下算法,并在程序中完成测试: (1)计算二叉树节点个数; (2)输出所有叶子节点; (3)求二叉树b的叶子节点个数 (4)设计一个算法Level(b,x,h),返回二叉链b中data值为x的节点的层数。 (5)判断二叉树是否相似(关于二叉树t1和t2相似的判断:①t1和t2都是
2017-11-02 11:22:50 123
原创 第九周 【项目2 - 二叉树遍历的递归算法】
【二叉树遍历的递归算法】 实现二叉树的先序、中序、后序遍历的递归算法,并对用”A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))”创建的二叉树进行测试。 [参考解答]#include stdio.h>#include "btree.h"void PreOrder(BTNode *b) //先序遍历的递归算法{ if
2017-11-02 11:21:30 152
原创 第九周 【项目1 - 二叉树算法库】
二叉树的链式存储算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:btree.h,包含定义二叉树的链式存储数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef BTREE_H_INCLUDED#define BTREE_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef
2017-11-02 11:19:41 162
原创 第七周 项目5 -排队看病模拟
编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事: (1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。 (2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。 要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下: (1)排队——输入排队病人的病历号,加入到病人排队队列中。 (2)就诊——
2017-11-02 11:10:41 265
原创 第七周 项目2 - 建立链队算法库
链队算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:liqueue.h,包含定义链队数据结构的代码、宏定义、要实现算法的函数的声明;[cpp] view plain copy#ifndef LIQUEUE_H_INCLUDED #define LIQUEUE_H_INCLUDED typedef
2017-11-02 11:07:08 261
原创 第七周项目1 - 建立顺序环形队列算法库
下图是数据存储结构设计及各种操作实现的要点: 顺序环形队列算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqqueue.h,包含定义顺序环形队列数据结构的代码、宏定义、要实现算法的函数的声明:[cpp] view plain copy#ifndef SQQUEUE_H_INCLUDED #de
2017-10-26 10:15:53 272
原创 第五周 项目2 - 建立链栈算法库
链栈算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:listack.h,包含定义链栈数据结构的代码、宏定义、要实现算法的函数的声明; #ifndef LISTACK_H_INCLUDED#define LISTACK_H_INCLUDEDtypedef char ElemType;typedef struct linknode{ El
2017-10-12 11:16:29 232
原创 第五周 项目1 - 建立顺序栈算法库
顺序栈算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqstack.h,包含定义顺序栈数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef SQSTACK_H_INCLUDED #define SQSTACK_H_INCLUDED #define MaxSize 100 typedef char ElemType; ty
2017-10-12 10:55:14 125
原创 第四周 项目5- 循环双链表应用
【项目- 循环双链表应用】 设非空线性表ha和hb都用带头节点的循环双链表表示。设计一个算法Insert(ha,hb,i)。其功能是:i=0时,将线性表hb插入到线性表ha的最前面;当i>0时,将线性表hb插入到线性表ha中第i个节点的后面;当i大于等于线性表ha的长度时,将线性表hb插入到线性表ha的最后面。 请在实现算法时,除项目中给出的特殊要求,其余工作均可利用项目4完成的算
2017-09-28 11:20:30 217
原创 第四周 项目4 - 建设双链表算法库
双链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:dlinklist.h,包含定义双链表数据结构的代码、宏定义、要实现算法的函数的声明:[cpp] view plain copy#ifndef DLINKLIST_H_INCLUDED #define DLINKLIST_H_INCLUDE
2017-09-28 11:14:44 216
原创 第四周 项目3 - 单链表应用
项目 - 单链表算法 (程序中利用了已经实现的单链表算法,头文件LinkList.h及其中函数的实现见单链表算法库) 1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。 [参考解答] (程序中利用了已经实现的单链表算法,头文件LinkL
2017-09-28 11:00:58 196
原创 第四周 项目2 - 建设“单链表”算法库
按照“0207将算法变程序”部分建议的方法,建设自己的专业基础设施算法库。这一周,建的是单链表的算法库。 算法库包括两个文件: 头文件:linklist.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明; 源文件:linklist.cpp,包含实现各种算法的函数的定义 请采用程序的多文件组织形式,建立如上的两个文件,另外再建立一个源文件
2017-09-28 10:58:06 185
原创 第四周项目一 建立单链表
#include #include typedef int ElemType; typedef struct LNode //定义单链表结点类型 { ElemType data; struct LNode *next; //指向后继结点 } LinkList; void CreateListF(Lin
2017-09-28 10:54:31 188
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人