- 博客(51)
- 收藏
- 关注
原创 课程设计源代码
/* 烟台大学计算机学院 文件名称:goushuai.cpp 作者:张帅 完成日期:2017年12月22日 问题描述:通讯录系统 */ #ifndef ZCCC_H_INCLUDED#define ZCCC_H_INCLUDED#include #include #include #include
2017-12-22 14:20:22
1664
原创 课程总结
O:这学期学的内容是建立在C语言的基础上进行的,我的C语言基础较差,导致初时学习起来难度较大,还好这学期我们学的内容“连贯性”并不算很大,比如树那一块,二叉树,完全二叉树等等,画图我觉得非常有意思,并且与前面的连接并不算大,所以我可以较为简单的学习起来,还有后边的内排序等,老师的教学方法我非常喜欢,用扑克牌和画图的方式与我们进行互动,让我们更容易融入到学习中去。总的来说这学期的学习状况还算可以,让
2017-12-14 10:24:48
226
原创 第十二周 Prim算法的验证
(图1) 测试用图结构 :代码:#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<g.n;
2017-11-30 10:05:19
242
原创 第十一周 项目5 - 迷宫问题之图深度优先遍历解法
【项目 - 迷宫问题之图深度优先遍历解法】 设计一个程序,采用深度优先遍历算法的思路,解决迷宫问题。 (1)建立迷宫对应的图数据结构,并建立其邻接表表示。 (2)采用深度优先遍历的思路设计算法,输出从入口(1,1)点到出口(M,N)的所有迷宫路径。[模型建立] 将迷宫中的每一格作为一个顶点,相邻格子可以到达,则对应的顶点之间存在边相连。 例如,下面的
2017-11-30 10:03:28
237
原创 第十一周 项目4(2) - 利用遍历思想求解图问题
1、最短路径 问题:求不带权连通图G中从顶点u到顶点v的一条最短路径。#include #include #include "graph.h"typedef struct{ int data; //顶点编号 int parent; //前一个顶点的位置} QUERE;
2017-11-30 10:02:00
148
原创 第十一周 项目4(1) - 利用遍历思想求解图问题
1、是否有简单路径? 问题:假设图G采用邻接表存储,设计一个算法,判断顶点u到v是否有简单路径。#include #include #include "graph.h"int visited[MAXV]; //定义存放节点的访问标志的全局数组void ExistPath(ALGraph *G,int u,int v, bool &has){ int w
2017-11-30 10:00:09
230
原创 第十一周 项目3 - 图遍历算法实现
1、深度优先遍历——DFS#include #include #include "graph.h"int visited[MAXV];void DFS(ALGraph *G, int v){ ArcNode *p; int w; visited[v]=1; printf("%d ", v); p=G->adjlist[v].firstarc
2017-11-30 09:55:34
171
原创 第十一周 项目2 - 操作用邻接表存储的图
【项目 - 操作用邻接表存储的图】 假设图G采用邻接表存储,分别设计实现以下要求的算法: (1)输出出图G中每个顶点的出度; (2)求出图G中出度最大的一个顶点,输出该顶点编号; (3)计算图G中出度为0的顶点数; (4)判断图G中是否存在边i,j>。 利用下图作为测试用图,输出结果。 提示:(1)分别设计函数实现算法;(2)不要全部实现完再测试,而是实现一个,测
2017-11-29 10:18:15
221
原创 第十一周 项目1 - 图基本算法库
图的存储结构主要包括邻接矩阵和邻接表,本算法库提供存储结构的定义,以及用于构造图存储结构、不同结构的转换及显示的代码。算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:graph.h,包含定义图数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef GRAPH_H_INCLUDED#define GRAPH_H_INCLUDED#define MAXV 1
2017-11-29 10:16:47
144
原创 第十周 项目4 - 线索化二叉树(中序)
本文是数据结构基础系列(6):树和二叉树中第14课时线索二叉树的例程。#include #include #define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data; int ltag,rtag; //增加的线索标记 struct node *lch
2017-11-29 10:14:13
171
原创 第十周 项目3 - 二叉树的构造
1.由先序序列和中序序列构造二叉树定理:任何n(n≥0)个不同节点的二叉树,都可由它的中序序列和先序序列唯一地确定。证明(数学归纳法) 基础:当n=0时,二叉树为空,结论正确。 假设:设节点数小于n的任何二叉树,都可以由其先序序列和中序序列唯一地确定。 归纳:已知某棵二叉树具有n(n>0)个不同节点,其先序序列是a0a1…an−1;中序序列是b0b1…bk−1bkbk+1…bn
2017-11-29 10:12:25
157
原创 第十周 项目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-11-23 11:19:09
399
原创 第十周 项目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){ BTNod
2017-11-23 11:15:06
287
原创 第九周 纸上谈兵:“知原理”检验题目
1、某树,用括号表示法描述为:A(B(E),C(F,G(I,J),H(K)),D) (1)请用树形表示法,画出这个树 (2)双亲表示法的数据结构定义为typedef struct { ElemType data; int parent;} PTree[MaxSize];12345请描述这个树利用双亲表示法时的存储 (3)用孩子链存储时,每个节点定义下
2017-11-23 11:10:36
236
原创 第九周项目3 - 利用二叉树遍历思想解决问题
【利用二叉树遍历思想解决问题】 假设二叉树采用二叉链存储结构存储,分别实现以下算法,并在程序中完成测试: (1)计算二叉树节点个数; (2)输出所有叶子节点; (3)求二叉树b的叶子节点个数 (4)设计一个算法Level(b,x,h),返回二叉链b中data值为x的节点的层数。 (5)判断二叉树是否相似(关于二叉树t1和t2相似的判断:①t1和t2都是
2017-11-23 11:09:26
156
原创 第九周项目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)
2017-11-16 10:51:04
229
原创 第九周项目1 - 二叉树算法库
二叉树的链式存储算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:btree.h,包含定义二叉树的链式存储数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef BTREE_H_INCLUDED#define BTREE_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef struc
2017-11-16 10:47:10
202
原创 第八周(2) 项目3.2-稀疏矩阵的三元组表示的实现及应用
【项目 - 稀疏矩阵相加】 采用三元组存储稀疏矩阵,设计两个稀疏矩阵相加的运算算法 提示1:两个行数、列数相同的矩阵可以相加 提示2:充分利用已经建立好的算法库解决问题[参考解答1] #include #include "tup.h"bool MatAdd(TSMatrix a,TSMatrix b,TSMatrix &c){ int i,j;
2017-11-16 10:44:50
203
原创 第八周(2) 项目3.1-稀疏矩阵的三元组表示的实现及应用
稀疏矩阵的三元组表示相关的算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:tup.h,包含定义稀疏矩阵的三元组表示数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef TUP_H_INCLUDED#define TUP_H_INCLUDED#define M 6#define N 7#define MaxSize 100 //矩阵
2017-11-16 10:42:20
325
原创 第八周(2) 项目2.2 - 对称矩阵压缩存储的实现与应用
(2)设计算法,实现两个用压缩形式存储的对称矩阵A和B的加法和乘法。实现中请使用好前面设计的基本运算。 【项目 - 压缩存储的对称矩阵的运算】 设计算法,实现两个用压缩形式存储的对称矩阵A和B的加法和乘法。实现中请使用好前面设计的基本运算。[参考解答]#include #define N 4#define M 10int value(int a
2017-11-16 10:39:21
167
原创 第八周(2) 项目2.1 - 对称矩阵压缩存储的实现与应用
本文针对数据结构基础系列网络课程(5):数组与广义表中第2课时特殊矩阵的压缩存储。问题:用压缩形式存储对称矩阵,实现下面的操作并测试 void Init(int *&b);//为N阶对称矩阵初始化存储数据的一维数组bint Value(int b[], int i, int j);//返回存储在b[M]中,对应二维数组A[i][j]的值void Assign(int b
2017-11-16 10:37:46
140
原创 第八周(2) 项目1 - 猴子选大王
一群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,最后一只出圈的猴子为大王。输入m和n,输出猴子离开圈子的顺序,从中也可以看出最后为大王是几号猴子。 要求采用数组作为存储结构完成。[参考解答1] 在一个数组中,数组中用1表示猴子在圈中,用0表示猴子已经出圈,数组下标对应与猴子编号对应
2017-11-16 10:35:53
210
原创 第八周项目5 - 计数的模式匹配
【项目 - 计数的模式匹配】 采用顺序结构存储串,编写一个算法计算指定子串在一个字符串中出现的次数,如果该子串不出现则为0。提示:无论BF模式匹配算法,还是KMP算法,都是在找到子串substr后就退出了。解决这个问题,要查找完整个字符串,并将出现的次数记下来。改造这两个算法吧。 改造BF算法完成求解。#include #include "sqStrin
2017-11-16 10:34:00
263
原创 第八周 项目4-字符串加密
【项目-字符串加密】 一个文本串可用事先编制好的字符映射表进行加密。例如,设字符映射表为:abcdefghijklmnopqrstuvwxyzngzqtcobmuhelkpdawxfyivrsj 则字符串“lao he jiao shu ju jie gou”被加密为“enp bt umnp xby uy umt opy”。 设计一个程序,实现加密、解
2017-11-16 10:32:46
242
原创 第八周项目3-顺序串算法
采用顺序存储方式存储串,实现下列算法并测试: (1)试编写算法实现将字符串S中所有值为c1的字符换成值为c2的字符: void Trans(SqString *&s, char c1, char c2); (2)试编写算法,实现将已知字符串所有字符倒过来重新排列。如ABCDEF改为FEDCBA。 void Invert(SqString &s) (3)从串s中删除其值等于c的所
2017-11-16 10:30:29
327
原创 第八周项目2 - 建立链串的算法库
链串算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:liString.h,包含定义链串数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef LISTRING_H_INCLUDED#define LISTRING_H_INCLUDEDtypedef struct snode{ char data; struct snode *next;
2017-11-09 10:37:14
229
原创 第八周项目1 - 建立顺序串的算法库
顺序串算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqString.h,包含定义顺序串数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef SqString_H_INCLUDED#define SqString_H_INCLUDED#define MaxSize 100 //最多的字符个数typedef struct{
2017-11-09 10:31:51
150
原创 第七周 项目6 - 停车场模拟
设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有)。汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开。若车场内已停满n辆汽车,则后来的汽车只能在门外的候车场上等候,一旦有车开走,则排在候车场上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路(假定停车场内设有供车辆进出的便道,
2017-11-09 10:29:38
370
原创 第七周 项目5 -排队看病模拟
【项目 - 排队看病模拟】 编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事: (1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。 (2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。 要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下: (1)排队——输入排队病人的病历号,加入到病人
2017-11-09 10:27:40
272
原创 第七周项目4 - 队列数组
#ifndef LIQUEUE_H_INCLUDED#define LIQUEUE_H_INCLUDEDtypedef int ElemType;typedef struct qnode{ ElemType data; struct qnode *next;} QNode; //链队数据结点类型定义typedef struct{ QNode
2017-11-09 10:25:38
141
原创 第七周 项目3 - 负数把正数赶出队列
设从键盘输入一整数序列a1,a2,…an,试编程实现:当ai>0时,ai进队,当ai#include #include #include "sqqueue.h"int main(){ ElemType a,x; SqQueue *qu; //定义队列 InitQueue(qu); //队列初始化 while (1) {
2017-11-09 10:22:13
262
原创 第七周 项目2 - 建立链队算法库
链队算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:liqueue.h,包含定义链队数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef LIQUEUE_H_INCLUDED#define LIQUEUE_H_INCLUDEDtypedef char ElemType;typedef struct qnode{ ElemType
2017-11-02 10:46:09
204
原创 第七周 项目1 - 建立顺序环形队列算法库
下图是数据存储结构设计及各种操作实现的要点:顺序环形队列算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:sqqueue.h,包含定义顺序环形队列数据结构的代码、宏定义、要实现算法的函数的声明:#ifndef SQQUEUE_H_INCLUDED#define SQQUEUE_H_INCLUDED#define MaxSize 5typedef ch
2017-10-26 10:21:23
220
原创 第五周 项目3 - 括号的匹配
假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*2+{[3]}-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。提示: (1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为空。若在中间出现一个不配对的,
2017-10-26 10:06:16
146
原创 第五周项目2-建立链栈算法库
1.头文件:listack.h,包含定义链栈数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef LISTACK_H_INCLUDED#define LISTACK_H_INCLUDEDtypedef char ElemType;typedef struct linknode{ ElemType data; //数据域 struct
2017-10-25 10:27:16
207
原创 第五周 项目1 - 建立顺序栈算法库
1.头文件:sqstack.h,包含定义顺序栈数据结构的代码、宏定义、要实现算法的函数的声明;#ifndef SQSTACK_H_INCLUDED#define SQSTACK_H_INCLUDED#define MaxSize 100typedef char ElemType;typedef struct{ ElemType data[MaxSize]; int
2017-10-24 20:45:28
158
原创 第四周 项目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-10-24 20:42:57
214
原创 第四周 项目5- 循环双链表应用
设非空线性表ha和hb都用带头节点的循环双链表表示。设计一个算法Insert(ha,hb,i)。其功能是:i=0时,将线性表hb插入到线性表ha的最前面;当i>0时,将线性表hb插入到线性表ha中第i个节点的后面;当i大于等于线性表ha的长度时,将线性表hb插入到线性表ha的最后面。 #include #include #include "cdlinklist.h"void Inser
2017-10-24 20:41:06
217
原创 第四周 项目4 - 建设双链表算法库
双链表算法库算法库采用程序的多文件组织形式,包括两个文件: 1.头文件:dlinklist.h,包含定义双链表数据结构的代码、宏定义、要实现算法的函数的声明:#ifndef DLINKLIST_H_INCLUDED#define DLINKLIST_H_INCLUDEDtypedef int ElemType;typedef struct DNode
2017-10-24 20:38:06
191
原创 第四周 项目3 - 单链表应用
1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。 [参考解答] (程序中利用了已经实现的单链表算法,头文件LinkList.h及其中函数的实现见 单链表算法库)#include #include #include "linklist
2017-10-24 20:32:25
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人