武汉纺织大学《数据结构》实验报告(共23页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《武汉纺织大学《数据结构》实验报告(共23页).doc》由会员分享,可在线阅读,更多相关《武汉纺织大学《数据结构》实验报告(共23页).doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上武汉纺织大学数据结构实验报告班级: 管工类 专业 班 姓名: 序号: 实验时间: 2014 年 5 月 16 日 指导教师: 实验三:图的基本操作与应用一、实验目的: 1、掌握图的几种主要存储方法及基本操作2、掌握图的两种遍历方法3、掌握利用普里姆算法和克鲁斯卡尔算法求取最小生成树的方法4、掌握求取AOE网关键路径的方法,以实现项目时间管理二、实验内容:1、编写程序,输出图的邻接矩阵,输出两种遍历序列,并求出最小生成树。 实验步骤: 、在Java语言编辑环境中新建程序,输入顶点集合和边集合,构造一个图7-15所示的带权图,可参考书本225页示例程序; 、对该带权图,进
2、行插入顶点、插入边、删除顶点、删除边操作,并输出操作后的邻接矩阵,可参考书本226-228页示例程序; 、输出从顶点A开始的深度优先遍历和广度优先遍历的序列,可参考书本238、240页示例程序; 、输出运用普里姆算法求出的最小生成树,可参考书本245页示例程序。2、设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键活动。实验步骤: 、在Java语言编辑环境中新建程序,输入如下图所示的AOE网; 、按照关键路径求取步骤,求出各个顶点的最早开始时间和最迟开始时间; 、求出各个活动的最早开始时间和最迟开始时间; 、找出该AOE网的关键路径,并计算出该项目的完成时间。关键路径相关时间知识
3、点: 设活动ai由弧(即从顶点j到k)表示,其持续时间记为dut(),则: e(i)=ve(j) l(i)=vl(k)-dut()求ve(i)和vl(j)分两步: (1).从ve(1)=0开始向前递推ve(j)=Maxve(i)+dut()T, 2=j=n ,其中,T是所有以j为弧头的弧的集合。(2).从vl(n)=ve(n)开始向后递推vl(i)=Minvl(j)-dut() S,1=i=n-1,其中,S是所有以i为弧尾的弧的集合。求关键路径的算法: 、输入e条弧,建立AOE网的存储结构; 、从起始点出发,令ve0=0,按拓扑顺序求其余各顶点的最早发生时间vei(1=i=i=0); 、根据各
4、顶点的ve和vl值,求每条弧s的最早开始时间e(s)和最迟开始时间l(s)。若某弧满足条件e(s)=l(s),则为关键活动。三、操作步骤:Test1代码:Graph1.javapackage Frist;public class Graph1 public static void main(String args) String vertices = A, B, C, D, E ;Edge edges = new Edge(0, 1, 5), new Edge(0, 3, 2),new Edge(1, 0, 5), new Edge(1, 2, 7), new Edge(1, 3, 6),ne
5、w Edge(2, 1, 7), new Edge(2, 3, 8), new Edge(2, 4, 3),new Edge(3, 0, 2), new Edge(3, 1, 6), new Edge(3, 2, 8),new Edge(3, 4, 9), new Edge(4, 2, 3), new Edge(4, 3, 9) ;AdjMatrixGraph graph = new AdjMatrixGraph(vertices,edges);System.out.println(带权无向图, + graph.toString();System.out.println(插入顶点F,插入边(A
6、,F,20),删除顶点C,删除边(D,E);int i = graph.insertVertex(F);graph.insertEdge(0, i, 20);graph.insertEdge(i, 0, 20);graph.removeVertex(2);graph.removeEdge(2, 3);graph.removeEdge(3, 2);System.out.println(graph.toString();AdjMatrixGraph graph1 = new AdjMatrixGraph(vertices,edges);System.out.print(深度优先遍历序列为:);gr
7、aph1.DFSTraverse(0);System.out.print(广度优先遍历序列为:);graph1.BFSTraverse(0);AdjMatrixGraph graph2 = new AdjMatrixGraph(vertices,edges);System.out.print(带权无向图, + graph2.toString();graph2.minSpanTree_prim();LList.javapackage Frist;public interface LList boolean isEmpty();int length();T get(int i);void set(
8、int i, T x);void insert(int i, T x);T remove(int i);void removeAll();QQueue.javapackage Frist;public interface QQueue boolean isEmpty();void enqueue(T x);T dequeue();SeqList.javapackage Frist;public class SeqList implements LList private Object element;private int len;public SeqList(int size) this.e
9、lement = new Objectsize;this.len = 0;public SeqList() this(64);public boolean isEmpty() return this.len = 0;public int length() return this.len;public T get(int i) if (i = 0 & i = 0 & i 0)str += this.element0.toString();for (int i = 1; i this.len; i+)str += , + this.elementi.toString();return str +
10、);public void insert(int i, T x) if (x = null)return;if (this.len = element.length) Object temp = this.element;this.element = new Objecttemp.length * 2;for (int j = 0; j temp.length; i+)this.elementi = tempj;if (i this.len)i = this.len;for (int j = this.len - 1; j = i; j-)this.elementj + 1 = this.el
11、ementj;this.elementi = x;this.len+;public void append(T x) insert(this.len, x);public T remove(int i) if (this.len = 0 | i = this.len)return null;T old = (T) this.elementi;for (int j = i; j this.len - 1; j+)this.elementj = this.elementj + 1;this.elementthis.len - 1 = null;this.len-;return old;public
12、 void removeAll() this.len = 0;SeqQueue.javapackage Frist;public class SeqQueue implements QQueue private Object element;private int front, rear;public SeqQueue(int length) if (length 64)length = 64;this.element = new ObjectMath.abs(length);this.front = this.rear = 0;public SeqQueue() this(64);publi
13、c boolean isEmpty() return this.front = this.rear;public void enqueue(T x) if (x = null)return;if (this.front = (this.rear + 1) % this.element.length) Object temp = this.element;this.element = new Objecttemp.length * 2;int i = this.front, j = 0;while (i != this.rear) this.elementj = tempi;i = (i + 1
14、) % temp.length;j+;this.front = 0;this.rear = j;this.elementthis.rear = x;this.rear = (this.rear + 1) % this.element.length;public T dequeue() if (isEmpty()return null;T temp = (T) this.elementthis.front;this.front = (this.front + 1) % this.element.length;return temp;public String toString() String
15、str = (;if (!isEmpty() str += this.elementthis.front.toString();int i = (this.front + 1) % this.element.length;while (i != this.rear) str += , + this.element.length;return str + );GGraph.javapackage Frist;public interface GGraph public static final int MAX_WEIGHT = 99999;int vertexCount();T get(int
16、i);int getWeight(int i, int j);int insertVertex(T x);void insertEdge(int i, int j, int weight);void removeEdge(int i, int j);void removeVertex(int i);int getNextNeighbor(int i, int j);void DFSTraverse(int i);void BFSTraverse(int i);AbstractGraph.javapackage Frist;public abstract class AbstractGraph
17、implements GGraph public abstract int vertexCount();public abstract T get(int i);public abstract int getNextNeighbor(int i, int j);public void DFSTraverse(int i) boolean visited = new booleanthis.vertexCount();int j = i;do if (!visitedj) System.out.print();this.depthfs(j, visited);System.out.print()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 武汉 纺织 大学 实验 报告 23
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内