1、 1 / 22 算法与数据结构课程设计报告算法与数据结构课程设计报告 系系 (院) :院) : 计算机科学学院 专业班级:专业班级: 姓姓 名:名: 学学 号:号: 指导教师:指导教师: 设计时间:设计时间: 设计地点:设计地点: 2 / 22 目录 一、设计方案设计方案及实现过程及实现过程*第 3 页 二、实现实现代码代码*第 4 页 三、测试测试*第 19 页 四、难点与收获难点与收获*第 21 页 3 / 22 一、 设计方案及实现过程 这次课程设计要求实现无向图、有向图、无向网以及有向网的一些基本操作以及应用, 大体的方案是先进入界面后,选择无向图、有向图、无向网、无向网中的一个,然后
2、创建相 应的图或者网,创建好后,在此基础上选择进行相关的操作,具体的函数放在 main 函数前 面,通过多次函数调用已达到具体操作的实现。 流程图如下:流程图如下: 进入选择界 面 1 无向图 创建无向图 1 创建无向图 的邻接矩阵 函数调用 2 创建无向图 的邻接表 函数调用 3无向图的深 度优先遍历 函数调用 4 无向图的广 度优先遍历 函数调用 5 返回选择主 界面 2 有向图 3 无向网 4 有向网 5 退出 有向图、无向网、有向网的操作和无向图类似, 在这里不一一列举。 4 / 22 二、二、 实现代码实现代码 #include # include # define maxlen 1
3、0 # define large 999 # define true 1 # define false 0 # define ok 1 # define error 0 # define overflow -2 # define null 0 typedef int status; #include #include #include #include #include using namespace std; #define MAX_VERTEX_NUM 20 #define MAX 1000 typedef struct int amaxlen,bmaxlen,hmaxlen; char
4、vexsmaxlen; int vexnum,arcnum; int kind; int arcsmaxlenmaxlen; graph; typedef struct node int adjvex; int info; struct node *next; edgenode; typedef struct int id; char data; edgenode *link; vexnode; typedef struct 5 / 22 vexnode adjsmaxlen; int vexnum,arcnum; int kind; adjlist; typedef struct qnode
5、 int data; struct qnode *next; linkqlist; typedef struct linkqlist *front; linkqlist *rear; linkqueue; typedef struct int stackmaxlen; int top; stackstru; int cnull=-1; graph g; adjlist adjl; stackstru *t; stackstru *s; linkqueue *q; graph printf_adjmatrix(graph g) int i,j; printf(“邻接矩阵:n“); printf(“vertext“); for (i=0;iinfo=g.hi; p-next=adjl.adjsg.ai-1.link; adjl.adjsg.ai-1.link=p; if(g.kind=2|g.kind=4)/创建无向邻接表 for(i=0;iinfo=g.hi; p-adjvex=g.bi; p-next=adjl.adjsg.ai-1.link; a