




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构实验指导书计算机专业实验中心2014年9月实验一、线性表的实现及操作(一)5实验二、线性表的实现及操作(二)8实验三、线性表的应用13实验四、二叉树的实现及操作14实验五、二叉树的应用19实验六、图的遍历操作20实验七、图的应用27数据结构上机实验的内容和要求通过上机实验加深对课程内容的理解,增加感性认识,提高程序设计、开发及调试能力。 本实验指导书适用于16学时数据结构实验课,实验项目具体内容如下:序 号验称 实名容要 内提每组 人数实验 时数实验 要求lg分值(总100 分)1线性表的实现及操作 (一)顺序表建立、插入、删除 等基本操作12必做设计15分2线性表的实现及操作 (-)
2、单链表的建立、插入、删 除等基本操作12必做设计15分3线性表的应用约瑟夫环问题或者长整数相加的设计与实现12选作综合10分4二叉树的实现及操作二叉树的基本操作:树的 建立、前序、中序、后序 遍历12必做设计20分5二叉树的应用赫夫曼树12选作综合10分6图的遍历图的遍历:深度优先和广 度优先12必做设计20分7图的应用最短路径算法:Dijkstra 算法和Floyd算法12选作综合10分8算法性能测试、总结 和答疑对实验课涉及到的算法进 行性能测试、对实验所遇 到的问题进行总结和答疑12其中,第1、2、4、6实验项目为设计性实验,的其内容为程序代码分析与调试,要求 每位同学在每次实验课结束前
3、通过检查。这部分实验应撰写1份实验报告,总分70分。第3、5、7实验项目为综合应用性实验,学生根据自己的兴趣和基础选作。这三个实验 要求学生利用所学的理论知识解决实际问题,每一个实验应撰写一份实验报告,每个实验 10分。此实验指导书也适用于8学时数据结构实验课,要求完成第1、2、4、6实验项目。实验报告要求请按照实验教师要求,按时提交实验报告电子版文件。实验报告格式可个性化定义,内容包括但不限于以下内容:1、题目、姓名、学号、班级(首页)2、需求分析:陈述程序设计的任务,强调程序要做什么,明确规定:(1)输入的形式和输出值的范围;(2)输出的形式;(3)程序所能达到的功能;(4)测试数据:包括
4、正确的输入输出结果和错误的输入及输出结果。3、概要设计:说明用到的数据结构定义、主程序的流程及各程序模块之间的调用关系。4、详细设计:提交带注释的源程序或者用伪代码写出每个操作所涉及的算法。5、调试分析:(1)调试过程中所遇到的问题及解决方法;(2)算法的时空分析:(3)经验与体会。6、用户使用说明:说明如何使用你设计的程序,详细列出每一步操作步骤。(如果程序 操作简单,可略去)7、测试结果:列出对于给定的输入所产生的输出结果。(若有可能,测试随输入规模的 增长所用算法的实际运行时间的变化)8、总结实验一.线性表的实现及操作(一)一、实验目的了解和掌握线性表的顺序存储结构;掌握用C语言上机调试
5、线性表的基本方法;掌握 线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结 构上的运算,以及对相应算法的性能分析。二、实验要求给定一段程序代码,程序代码所完成的功能为:(1)建立一个线性表;(2)依次输入数 据元素1,2,3,4,5,6,7,&9,10; (3)删除数据元素5; (4)依次显示当前线性表中的数据元素。 假设该线性表的数据元素个数在最坏情况下不会超过100个,要求使用顺序表。程序中有3处错误的地方,有标识,属于逻辑错误,对照书中的代码仔细分析后,要求 同学们修改错误的代码,修改后上机调试得到正确的运行结果。三、程序代码include #defiiie
6、 MaxSize 100 typedef mt DataTvpe;typedef stmctDataType listMaxSize; int size; SeqList;严初始化顺序表L*/*定义初始数据元素个数*/严返回顺序表L的当前数据元素个数*/void ListInitiate(SeqList *L)L-size = 0;mt ListLengtli(SeqList L)return L.size;mt ListIiiseil(SeqList int i, DataType x)/*在顺序表L的位置i (0 W i W size)前插入数据元素值x*/ 严插入成功返回1,插入失败返回
7、0*/Ultj;if(L-size = MaxSize)prmtf(顺序表已满无法插入! n); leturn 0;else if(i L-size )pnnrff参数i不合法! nH);return 0;else/*为插入做准备*/*插入*/*元素个数加1*/此段程序有一处错误for(j = L-size; j i; j-) L-listj = L-listj;L-listi = x;L-size +;return 1;mt ListDelete(SeqList *L, int 1, DataType *x)/*删除顺序表L中位置i (0 W i W size-1)的数据元素值并存放到参数乂
8、中*/*删除成功返回1,删除失败返回0*/intj;if(L-size = 0)pnntf(”顺序表已空无数据元素可删! n);return 0;else if(i L-size-l)pnntf(参数1不合法”);return 0;else此段程序有一处错误/*保存删除的元素到参数x中引for(j = i +1; j size-l; j+) L-listj = L-listj-l; /*依次前移*/ L-size-;/*数据元素个数减1*/return 1;mt ListGet(SeqList L, mt i, DataType *x)严取顺序表L中第i个数据元素的值存于x中,成功则返回1,失
9、败返回0*/if(i L.size-1)printf(参数i不合法! W);leturn 0;else*x = L.listi;return 1;void maiii(void)SeqList myList;iiit i, x;Listliutiate( &myList); fbr(i = 0; i 10; i+)Listlnsert(&mvList, i、i+1);ListDelete(&myList,4, &x);foi(i = 0; i ListLength(myList); i+) ListGet(, 1, &x); /此段程序有一处错i吴 prmtf(H%d x);实验二、线性表的实
10、现及操作(二)一、实验目的了解和掌握线性表的链式存储结构:掌握用C语言上机调试线性表的基本方法;掌握 线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结 构上的运算,以及对相应算法的性能分析。二、实验要求给定一段程序代码,程序代码所完成的功能为:(1)建立一个线性表;(2)依次输入数 据元素1,2,3,4,5,6,7,&9,10; (3)删除数据元素5; (4)依次显示当前线性表中的数据元素。 假设该线性表的数据元素个数在最坏情况卞不会超过100个,要求使用单链表。程序中有3处错误的地方,有标识,属于逻辑错误,对照书中的代码仔细分析后,要求 同学们修改错误的代码,
11、上机调试并得到正确的运行结果。三、程序代码:#include #include #include /*该文件包含pnngtf()等函数*/*该文件包含emt()等函数*/*该文件包含maUoc()等函数*/typedef iiit DataType;/*定义 DataType 为 iiit*/typedef stiuct NodeDataType data; struct Node *next; SLNode;void ListInitiate(SLNode *head)严初始化*7/*如果有内存空间,中请头结点空间并使头指针head指向头结点*/ if(*head = (SLNode *)n
12、ialloc(sizeof(SLNode) = NULL) exit(l);(*head)-next = NULL;/*置链尾标记NULL */mt ListLengtli(SLNode *head)SLNode *p = head;/*p指向首元结点int size = 0;严size初始为0*/wliile(p-next != NULL)/*循环计数*7p = p-next;size +;return size;mt ListIiisen(SLNode *head, mt i, DataType x)/*在带头结点的单链表head的数据元素ai (0 W 1 W size)结点前*/*插入
13、一个存放数据元素x的结点*/SLNode *p, *q;intj;p = head;/*p指向首元结点*/j = -l;/*j初始为*/wlule(p-next != NULL & j next;J卄;prmtfC插入位置参数错! ”);retuni 0;/*生成新结点由指针q指示*/if(q = (SLNode *)nialloc(sizeof(SLNode) = NULL) exit(l);q-data = x;此段程序有一处错误p-next = q-next;/*给指针 q-next 赋值*/p-next = q;/*给指针p-next重新赋值*/return 1;mt ListDele
14、te(SLNode *head, iiit i,DataTvpe *x)/*删除带头结点的单链表head的数据元素ai (0 W 1 W size - 1)结点*/ 严删除结点的数据元素域值由x带回。删除成功时返回失败返回0*/SLNode *p, *s; rntj;p = head;j7/*p指向首元结点*/*j初始为*/wliile(p-next != NULL & p-next-next!= NULL & j next;J+;pnnrff插入位置参数错! J; return 0;此段程序有一处错误 s = p-next;*x = s-data; p-next = s-next;仕ee;/
15、*指针s指向数据元素ai结点*/*把指针s所指结点的数据元素域值赋予X*/*把数据元素ai结点从单链表中删除指*/*释放指针s所指结点的内存空间*/leturn 1;mt ListGet(SLNode *head, mt 1, DataTe *x)严取数据元素ai和删除函数类同,只是不删除数据元素ai结点引SLNode *p; rntj;p = head;j710 wliile(p-next != NULL & j next; j+;prmtf(取元素位置参数错!” return 0;此段程序有一处错误*x = p-next;return 1;void Destroy(SLNode *head
16、)SLNode *p, *pl;p = *head;wliile(p != NULL)pl=p;p = p-next;fiee(pl);*head = NULL;void maiii(void)SLNode *head; mt i, x;Listlnitiate(&head);fbr(i = 0; i 10; i+)11if(ListIiisert(head, i,i+1) = 0)/*插入 10 个数据元素*/pnntf(”错误! retuni; if(ListDelete(head. 4、&x) = 0)严删J除数据元素 5*/prmtf(n错误! iT); return; fbr(i =
17、 0; i ListLength(head); i+)if(ListGet(head, i. &x) = 0)/*取元素 */pnntf(”错误! nn);retuni;else pnntf(M%d x);/* 显示数据元素 */Destioy( Ahead);12实验三.线性表的应用一、实验目的加深对线性表各项操作实现的理解,增强学生问题模拟、数据抽彖的能力。二、实验要求本实验共有两个题目,作为实验一和实验二的拓展题目,可选作其中一个或者两个都做。 选取根据题目要求进行设计,并编程实现,在实验报告中给出测试数据。三、实验内容1、约瑟夫环问题的设计与实现据说著名犹太历史学家Josephus有过
18、以卞的故事:在罗马人占领乔塔帕特后,39个 犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到, 于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人 该人就必须自杀,然后再由卞一个重新报数,直到所有人都自杀身亡为止。然而Josephus和 他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并 杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直 到最终只剩下一个人留下,这个人就可以继续活着。问题是,给定了和,一开始要站在什么 地方才能避免被处决? Josephus要他的
19、朋友先假装遵从,他将朋友与自己安排在第16个与 第31个位置,于是逃过了这场死亡游戏。问题:假设41个人围成一圈,其中有m个你的朋友不想死掉,从第一个开始报数,第 3个将被杀掉。为了保护自己和m个朋友,现在编写程序,求出如何安排自己和m个朋友 的初始位置。2、长整数表示与相加很长整数是指无法用long型数存储的数,因此需要用字符串数组来存储两个被加数,相 加的结果也保存于字符数组中,假如被加数长度不超过十进制40位,请编程实现该加法程 序并将相加结果输出。四、实验报告要求1、基本要求见第3页。2、给出实验结果。3、对算法的性能进行测试。要求分析算法的复杂度,测试程序对于不同犬小输入的运 行情况
20、(例如约瑟夫环,改变人数个数为50,100,1000等,测试其是否正常运行,比 较运行时间等)。13实验四.二叉树的实现及操作一、实验目的掌握二叉树的定义、结构特征,以及各种存储结构的特点及使用范怜I,各种遍历算 法。掌握用指针类型描述、访问和处理二叉树的运算。二、实验内容及要求有如下二叉树:根程序代码给出了该二叉树的链式存储结构的建立、前序、中序、后序遍历的算法, 同时也给出了查询是否在二叉树里的代码。代码有四处错误,有标识,属于逻辑错 误,对照书中的代码仔细分析后,请修改了在电脑里运行,该实验无需写实验报告,程 序能完全执行得满分。改对一处得总分的四分之一。include include
21、typedef char DataTvpe;严数据域*7typedef struct NodeDataTvpe data;14stmct Node *leftCluld; stmct Node *rightChild;BiTreeNode;严左子树指针引严右子树指针可严结点的结构体定义可严初始化创建二叉树的头结点引void Iiutiate(BiTreeNode *root)*root = (BiTreeNode *)malloc(sizeof(BiTreeNode);(*root)-leftCluld = NULL;(*ioot)-rightChild = NULL;void Destroy
22、(BiTreeNode *root)if(*root) != NULL & (*ioot)-leftciuld != NULL)Destrov(&(*】oot)leftChild);if(*root) != NULL & (*ioot)-iightChild != NULL) Destrov(&(*root)-rightCliild);fiee(*root);/*若当前结点cun-非空,在curr的左子树插入元素值为x的新结点*/*原curr所指结点的左子树成为新插入结点的左子树*/*若插入成功返回新插入结点的指针,否则返回空指针*/BiTreeNode *IiisertLeftNode(Bi
23、TieeNode *cun DataType x)BiTreeNode *s, *t;if(cuiT = NULL) retuin NULL;t = curr-leftChild;/*保存原curr所指结点的左子树指针*/s = (BiTreeNode *)malloc(sizeof(BiTreeNode);s-data = x;s-leftChild = t;/*新插入结点的左子树为原curr的左子树*/s-rightCluld = NULL;cun-leftCluld = s;/*新结点成为curr的左子树*7return curr-leftChild;/*返回新插入结点的指针*/15/*
24、若当前结点CU1T非空,在CU1T的右子树插入元素值为X的新结点*/*原curr所指结点的右子树成为新插入结点的右子树*/*若插入成功返回新插入结点的指针,否则返回空指针*/BiTreeNode *IiisertRightNode(BiTreeNode *cuir, DataType x)BiTreeNode *s, *t;if(cuiT = NULL) return NULL;t = curr-nghtChild;/*保存原cun所指结点的右子树指针*/s = (BiTreeNode *)malloc(sizeof(BiTreeNode);s-data = x;s-nghtCluld = t
25、;/*新插入结点的右子树为原curr的右子树*/s-leftChild = NULL;cun-rightChild = s;/*新结点成为curr的右子树*/renmi curr-nghtCluld;/*返回新插入结点的指针*/void PieOrder(BiTreeNode *t5 void visit(DataType item) 使用visit(item)函数前序遍历二叉树tif(t != NULL)/此小段有一处错误visit(t-data);PieOrder(t- lightChild, visit);PreOrdei(t- leftCliild, visit);void I11O1
26、 dei(BiTreeNode void visit(DataType item) 使用visit(item)函数中序遍历二叉树tif(t != NULL)/此小段有一处错误InOrder(t-leftChild, visit);InOrder(t-rightChild, visit);16visit(t-data);void PostOrder(BiTreeNode *t, void visit(DataTyp亡 item) 使用visit(item)函数后序遍历二叉树tif(t != NULL)/此小段有一处错误visit(t-data);PostOrder(t-leftChild, vi
27、sit);PostOrder(t-rightChild、visit);void Visit(DataType item)piiiitf(n%c item);BiTieeNode *Seaich(BiTreeNode *ioot, DataType x)需找元素 x 是否在二叉树中BiTreeNode *fmd=NULL;if(root!=NULL)if(root-data=x)fiiid=root;elsefiiid=Seaich(root-leftChild,x);if(fiiid=NULL)find=Search(root-iightChild,x);leturn find;void ma
28、iii(void)17BiTreeNode *root, *p, *pp.*find;chai x=E;Initiate(&ioot);p = IiisertLeftNode(root, A);p = IiisertLeftNode(p, B);p = IiisertLeftNode(p. D);p = IiisenRightNode(p, G);p = IiisenRightNode(ioot-leftChild, C); pp=p;InsertLeftNode(p. E);InsertRightNode(pp, F);pnntf(前序遍历:”);PieOider(root-leftClii
29、ld, Visit); prmtf(nn 中序遍历:,r); InOrder(root-leftChild, Visit); piiiitf(nn 后序遍历:,r); PostOrder(root-leftChild. Visit);find=Search(ioot,x);if(find!=NULL)pnntf(”n数据元素(?在二叉树中n”,x); else数据元素c不在二叉树中n”,x);Destroy(&root);IS实验五、二叉树的应用一、实验目的加深对二叉树的各项操作实现的理解,增强学生利用二叉树知识解决实际问题的能力。二、实验要求本实验为选作题目。需编程实现,撰写实验报告,并在实
30、验报告中给出测试结果。三、实验内容假设有一串字符串“DEDEDABDCDADEDADEDADACDEDED或者你自己给定一串 任意的字符串,利用赫夫曼树编程给出这串字符串的赫夫曼编码。以下是上面字符串编码后程序运行结果示例(自己所编程序的输入输出形式可自由发 挥):0 1 10 10 111 为为为骈 nfpcfpnfp 不 舄0辰2 3 5 ? 2 1 *=*:*=*: A B c D环环#:些 壬士X子字符串:DBDBDABDCDADBDADBDADACDBDBD转换后为:010010011010011101100100110010011001101110100100Press any k
31、ey to continue四、实验报告要求1、基本要求见第3页。2、给出实验结果。3、对算法的性能进行测试,要求分析算法的复杂度,测试程序在不同长度的字符串下运 行情况。19实验六、图的遍历操作一、实验目的掌握有向图和无向图的概念;掌握邻接矩阵和邻接链表建立图的存储结构;掌握DFS 及EFS对图的遍历操作;了解图结构在人工智能、工程等领域的广泛应用。二、实验要求采用邻接矩阵和邻接链表作为图的存储结构,完成有向图和无向图的DFS和BFS操作。 本实验给出了示例程序,其中共有4处错误,错误段均有标识,属于逻辑错误。请认真理解 程序,修改程序代码,并在电脑上调试运行。三、DFS和BFS的基本思想深
32、度优先搜索法DFS的基本思想:从图G中某个顶点Vo出发,首先访问Vo,然后选 择一个与Vb相邻且没被访问过的顶点Vi访问,再从Vi出发选择一个与Vi相邻且没被访问 过的顶点VJ访问,依次继续。如果当前被访问过的顶点的所有邻接顶点都已被访问, 则回退到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点W,从W出发按 同样方法向前遍历。直到图中所有的顶点都被访问。广度优先算法BFS的基本思想:从图G中某个顶点Vb出发,首先访问Vo,然后访问 与Vb相邻的所有未被访问过的顶点VI, V2,Vt:再依次访问与VI, V2, Vt相邻的起且未被访问过的的所有顶点。如此继续,直到访问完图中的所有顶点
33、。四、示例程序1. 邻接矩阵作为存储结构的程序示例#includestdio h#includestdlib h#define MaxVertexNum 100/定义最人顶点数typedef struet char vexs MaxVertexNum ;/顶点表int edges MaxVertexNum .MaxVertexNum;邻接矩阵,可看作边表int n,e;/图中的顶点数n和边数e/用邻接矩阵表示的图的类型=建立邻接矩阵=void CreatMGraph(MGraph *G)int i, j, k;char a;printf(Input VertexNum(n) and Edges
34、Num(e): ”);20scanf (/z%d, %d?,, &Gn, &G*e) ;/输入顶点数和边数scanf&a);pri nt f (,zInp ut Ver tex string/7);for(i=0;in;i+)scanf&a);G-vexsi=a;读入顶点信息,建立顶点表for(i=0;in;i+)for(j=0;jn;j+)G-edgesi j二0;初始化邻接矩阵prinut edges, Creat Adjacency Matrixn,?);for (k=0; ke; k+) /读入e条边,建立邻接矩阵scanf (%d%d, &i,&j) ;/输入边(Vi, Vj)的顶点
35、序号Gedgesij=l;G-edgesji=l; /若为无向图,矩阵为对称矩阵;若建立有向图,去掉该条语句 /=二二二定义标志向量,为全局变量二=二二二二typedef enum(FALSE, TRUE Boolean;Boolean visitedMaxVe:rtexNum;/=DFS:深度优先遍历的递归算法=void DFSM(MGraph *G, int i)/以Vi为出发点对邻接矩阵表示的图G进行DFS搜索,邻接矩阵是0, 1矩阵int j;printf(“%c, GvexsLi); visitedi=TRUE;for(j=0;jn;j+)/访问顶点Vi/置已访问标志/依次搜索Vi的
36、邻接点if(G-edgesi j=l &visitedEj)DFSM(G, j);/ (Vi, Vj) GE,且Vj未访问过,故Vj为新出发点void DFS(MGraph *G) 此段代码有一处错误int i;/标志向量初始化/Vi未访问过/以Vi为源点开始DFS搜索for(i=0;in;i+) visitedi=FALSE;for(i=0;in;i+) if(!visitedLi)DFS (G, i);21/=bfs :广度优先遍历二=void BFS(MGraph *G, int k)以Vk为源点对用邻接矩阵表示的图G进行广度优先搜索/定义队列/标志向量初始化队列初始化 /访问源点Vki
37、nt i, j, f=0, r=0;int cqMaxVertexNum;for(i=0;in;i+)visitedi=FALSE;for(i=0;in;i+)cqi=-l;printfG-vexsk);/Vk已访问,将其入队。注意,实际上是将其序号入队/队非空则执行/Vf出队依次Vi的邻接点Vjvisitedk=TRUE;cqr=k;while(cqfJ!二-1)i二cqf; f二f+1;for(j=0;jn;j+)if (Gedgesi j=l & !visitedj) /Vj 未访问 以下三行代码访问VJ/访问过Vj入队有一处错误printf (c, Gvexs j);visited j
38、FALSE;r=r+l; cqr=j;/=ma i n=:void mainOint i;MGraph *G;G= (MGraph *)malloc (sizeof (MGraph) ;/为图 G 申请内存空间CreatMGraph (G) ;/建立邻接矩阵printf (z,Print Graph DFS: ”);DFS (G) ;/深度优先遍历printf(n);printf(z,Print Graph BFS: ”);BFS (G, 3) ;/以序号为3的顶点开始广度优先遍历printf(n);执行顺序:Input VertexJum(n) and EdgesNum(e) : 8, 9I
39、nput Vertex string: 0123456722Input edges, Creat Adjacency Matrix 0 10 21 31 42 52 63 74 75 6Print Graph DFS: 01374256Print Graph BFS: 317012562. 邻接链表作为存储结构程序示例#includestdio h#includestdlib h#define MaxVertexNum 50 typedef struct node int adjvex;struet nod己 *next;:EdgeNode;typedef struct vnode char
40、vertex;EdgeNode *firstedge;定义最大顶点数边表结点邻接点域链域顶点表结点/顶点域边表头指针VertexNode;typedef VertexNode AdjListMaxVertexMum;/AdjList是邻接表类型typedef struet AdjList adjlist; int n, e; ALGraph;/邻接表图中当前顶点数和边数/图类型=建立图的邻接表=void CreatALGraph(ALGraph *G)int i, j, k;char a;EdgeNode *s;/定义边表结点printf(Input VertexNum(n) and Edge
41、sNum(e):);scanf (%d, %d, &Gn, &Ge) ;/读入顶点数和边数scanf (“%c, &a);printf(Input Vertex string:);23for (i=0; iG-n; i+)/建立边表scanf&a);Gadjlist i. vertex二a;/读入顶点信息Gadjlist i. f irstedge=NULL;/边表置为空表printf (z,Input edges, Creat Adjacency Listn);for (k=0: ke; k+) 建立边表scanf (%d%d, &i,&j) ;/读入边(Vi, Vj)的顶点对序号s= (E
42、dgeNode *)malloc (sizeof (EdgeNode) ;/生成边表结点sadjvex=j ;/邻接点序号为jsnext二Gadjlist i firstedge;Gadjlist i. f irstedge=s;/将新结点*S插入顶点Vi的边表头部s=(EdgeNode *)malloc(sizeof(EdgeNode);sadjvex=i ;/邻接点序号为isnext二Gadjlist j_ firstedge;Gadjlist j. firstedge=s;/将新结点*S插入顶点Vj的边表头部/=二二二定义标志向量,为全局变量二=二二二二 typedef enumFALSE, TRUE Boolean;Boolean visitedMaxVertexNum;/=二二dfs:深度优先遍历的递归算法=void DFSM(ALGraph *G, int i)/以Vi为出发点对邻接链表表示的图G进行DFS搜索EdgeNode *p;printfG-adjlist i. vertex) ;/访问顶点 Vivisitedi=TRUE;/标记 Vi 已访问p=Gadjlist i. firstedge;/取 Vi 边表的头指针while (p) /依次搜索Vi的邻接点Vj,这里j=p-adjvex以下3行代码有一处错误if(! visitdp-adjvex)D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机电设备安装电气安全防护方案
- 水泥与混凝土配比优化方案
- 水稻贪青课件
- 机电设备安装气动控制系统方案
- 园区创新资源对接方案
- 水电站税务知识培训课件
- 支气管哮喘口腔医10课件
- 水电收费课件
- 2025版海洋工程设计与施工合同样本
- 2025版国际金融合作贷款合同范本(含信用证)
- MissionPlanner地面站操作使用文档
- 中级采气工操作技能鉴定要素细目表
- 油水气井带压井作业操作规程及工艺技术要求
- (33)-钠钾泵细胞生物学
- 配电室巡检记录表
- 紧急宫颈环扎术的手术指征及术后管理
- GB/T 242-2007金属管扩口试验方法
- 政治理论水平任职资格考试题库
- 路基压实度汇总表
- 【食品生产加工技术】香肠的加工技术
- 贫困户访谈记录
评论
0/150
提交评论