2013台湾省数据结构分析基础
台湾省2013年注册结构工程师考试公共基础真题答案每日一练(2014.4.23)

【答案】A
即网络中的每台主机在没有联网之前,就有自己独立的操作系统,并且能够独立运行。联网以后,它本身是网络中的一个结点,可以平等地访间其他网络中的主机。
8、在Windows中,对存储器采用分段存储管理时,每一个存储器段可以小至1个字节,大至:
A.资源子网
B.通信子网
C.广域网
D.局域网
【答案】B
4、在下面列出的四种码中,不能用于表示机器数的一种是:
A.原码
B.ASCII码
C.反码
D.补码
【答案】B
机器数的表示有原码表示法、反码表示法、补码表示法。
5、总线能为多个部件服务,它可分时地发送与接收各部件的信息。所以,可以把总线看成是:
A.网络协议和网络操作系统
B.网络互连设备和网络协议
C.网络协议和计算机系统
D.网络操作系统和传输介质
【答案】A
网络软件主要包括:主要包括网络协议和网络操作系统。
13、联网中的每台计算机:
A.在联网之前有自己独立的操作系统,联网以后是网络中的一个结点
B.在联网之前有自己独立的操作系统,联网以后它自己的操作系统被屏蔽
C.在联网之前没有自己独立的操作系统,联网以后使用网络操作系统
D.联网中的每台计算机有可以同时使用的多套操作系统
【答案】A
即网络中的每台主机在没有联网之前,就有自己独立的操作系统,并且能够独立运行。联网以后,它本身是网络中的一个结点,可以平等地访间其他网络中的主机。
14、Windows的设备管理功能部分支持即插即用功能,下面四条后续说明中有错误的一条是:
01343数据结构原理与分析

课程名称:数据结构原理与分析课程代码:01343一、第一部分课程性质与目标二、课程的性质与特点:《数据结构》是信息技术专业、计算机应用技术专业的一门重要的专业基础课,用计算机解决任何实际问题都离不开数据表示和数据处理,而数据的表示和处理的核心问题之一数据结构及其实现正是数据结构课程的基本内容,在计算机软件的各个领域中均会使用到该课程的有关知识。
从这个意义上说数据结构课程在知识学习和技能培养两个方面都处于关键性地位;本课程的目的和任务是学生较全面地掌握各种常用的数据结构,为学习后续软件课程提供必要的基础,提高运用数据结构解决实际问题的能力。
本课程不仅为数据库及其应用操作系统概论面向对象程序设计软件工程等后继软件课程提供了必要的知识基础、也为计算机及应用的专业人员提供了必要的技能训练。
课程特点《数据结构》是实践性很强的课程,不仅要注重学习基本理论知识,更要注重上机实践,通过上机实践验证算法的正确性,掌握和巩固所学理论知识。
三、课程目标与基本要求:通过本课程的学习,使学生能够:1、掌握常用数据结构的基本概念;2、掌握四种常用逻辑结构的特点和数据组织方法;3、掌握线性表的存储结构及其算法的实现;4、掌握各种查找及排序的方法和算法实现;5、掌握树、图的存储结构;了解这两章的相关算法。
6、学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法。
7、通过对本课程算法设计和上机实践的训练,还要注重培养学生的数据抽象能力和基本程序设计的能力。
四、与本专业其他课程的关系本课程的先修课程为离散数学和高级语言程序设计(C语言和C++语言),后续课程为操作系统、数据库原理等。
数据结构中存储结构及基本运算的实现需要程序设计的基本知识和编程的经验及能力,本课程的大部分实例均是用C语言(或C++)实现的,故要求较熟练地掌握C语言(或C++)。
【课程修读对象】第二部分考核内容与考核目标第一章绪论一、学习目的和要求通过本章学习,学生需要掌握常用的基本概念,了解本书涉及的逻辑结构和存储结构,对本教材的体系有一个大致的了解。
2013台湾省数据要领基础

1、二部图(bipartite graph) G=(V,E)是一个能将其结点集V分为两不相交子集V 1和V2=V-V1的无向图,使得:V1中的任何两个结点在图G中均不相邻,V2中的任何结点在图G中也均不相邻。
(1).请各举一个结点个数为5的二部图和非二部图的例子。
(2).请用C或PASCAL编写一个函数BIPARTITE判断一个连通无向图G是否是二部图,并分析程序的时间复杂度。
设G用二维数组A来表示,大小为n*n(n为结点个数)。
请在程序中加必要的注释。
若有必要可直接利用堆栈或队列操作。
【2、请编写一个判别给定二叉树是否为二叉排序树的算法,设二叉树用llink-rlink法存储。
3、由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树,下面程序的作用是实现由已知某二叉树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序遍历序列,请写出程序所缺的语句。
#define MAX 100typedef struct Node{char info; struct Node *llink, *rlink; }TNODE;char pred[MAX],inod[MAX];main(int argc,int **argv){ TNODE *root;if(argc<3) exit 0;strcpy(pred,argv[1]); strcpy(inod,argv[2]);root=restore(pred,inod,strlen(pred));postorder(root);}TNODE *restore(char *ppos,char *ipos,int n){ TNODE *ptr; char *rpos; int k;if(n<=0) return NULL;ptr->info=(1)_______;for((2)_______ ; rpos<ipos+n;rpos++) if(*rpos==*ppos) break;k=(3)_______;ptr->llink=restore(ppos+1, (4)_______,k );ptr->rlink=restore ((5)_______+k,rpos+1,n-1-k);return ptr;}postorder(TNODE*ptr){ if(ptr=NULL) return;postorder(ptr->llink); postorder(ptr->rlink); printf(“%c”,ptr->info);}4、二路插入排序是将待排关键字序列r[1..n]中关键字分二路分别按序插入到辅助向量d[1..n]前半部和后半部(注:向量d可视为循环表),其原则为,先将r[l]赋给d[1],再从r[2] 记录开始分二路插入。
2014年台湾省《数据结构》期末考试试题及答案考试技巧重点

5、数据结构在计算机内存中的表示是指 A 。
A.数据的存储结构 B.数据结构 C.数据的逻辑结构 D.数据元素之间的关系
6、在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。
A.数据的处理方法 B.数据元素的类型
C.数据元素之间的关系 D.数据的存储方法
12、在决定选取何种存储结构时,一般不考虑 A 。
A.各结点的值如何 B.结点个数的多少
C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。
13、已知关键字序列为{66,82,25,51,98,108},利用快速排序方法,以第一个元素为基准得到的一趟排序结果为
10、深度为k的完全二叉树所含叶结点的个数最多为( B)。
A)2k B) 2k-1 C)k D) 2k
11、在决定选取何种存储结构时,一般不考虑 A 。
A.各结点的值如何 B.结点个数的多少
C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。
C)平均查找长度 D)算法难易程度
3、在决定选取何种存储结构时,一般不考虑 A 。
A.各结点的值如何 B.结点个数的多少
C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。
4、深度为k的完全二叉树所含叶结点的个数最多为( B)。
A)2k B) 2k-1 C)k D) 2k
22、在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。
A. HL=ps p一>next=HL
B. p一>next=HL;HL=p3
C. p一>next=Hl;p=HL;
பைடு நூலகம் D. p一>next=HL一>next;HL一>next=p
2014台湾省数据结构与算法最新考试题库(完整版)_图文

C)顺序队列 D)链队列
18、下面关于线性表的叙述中,错误的是哪一个?( D )
A)线性表采用顺序存储,必须占用一片连续的存储单元。
B)线性表采用链接存储,便于插入和删除操作。
C)线性表采用链接存储,不必占用一片连续的存储单元。
A)线性表 B)栈
C)队列 D)集合
12、串的逻辑结构与( D )的逻辑结构不同。
A)线性表 B)栈
C)队列 D)树
13、下列各种数据结构中属于线性结构的有( A )。
23、广义表A=(A,B,(C,D),(E,(F,G))),则head(tail(head(tail(tail(A)))))=( D )。
A) (G) B) (D) C) C D) D
24、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。
C)删除运算方便 D)可方便地用于各种逻辑结构的存储表示
10、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一
C)不含回路 D)有n条边
11、串的逻辑结构与( D )的逻辑结构不相同。
C)空表 D),常产生假溢出现象。
A)顺序栈 B)循环队列
C)顺序队列 D)链队列
31、在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行( A ) 。
46、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。
2014年台湾省C++答案 数据结构试卷及答案考试重点和考试技巧

D.s->next = p;s->prior = p->prior;p->prior->next = s;p->prior = s
6、若某线性表中最常用的操作是取第i个元素和找第i个元素的前驱,则采用( )存储方法最节省时间
A 顺序表 B单链表 C 双链表 D单循环链表
7、在二维数组a[9][10]中:每个数组元素占用3个存储空间,从首地址SA开始按行优先
连续存放,则元素a[8][5]的起始地址是
1、在以下的叙述中,正确的是 B 。
A.线性表的顺序存储结构优于链表存储结构
B.二维数组是其数据元素为线性表的线性表
C.栈的操作方式是先进先出
D.队列的操作方式是先进后出
2、下列选项中,符合堆定义的是
A.{102,24,55,60,89,93}
B.{24,89,55,60,93,102}
32、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 B 。
A.单链表 B.静态链表 C.线性链表 D.顺序存储结构
33、数据结构中,从逻辑上可以把数据结构分成(?)。
?A.动态结构和静态结构?B.紧凑结构和非紧凑结构?C.线性结构和非线性结构?D.内部结构和外部结构
B.二维数组是其数据元素为线性表的线性表
C.栈的操作方式是先进先出
D.队列的操作方式是先进后出
29、一个栈的入栈序列是1,2,3,4,5,则不可能的出栈序列是( )
A 5,4,3,2,1 B 4,5,3,2,1 C 4,3,5,1,2 D 1,2,3,4,5
2013数据结构大题408
2013数据结构大题408摘要:1.2013 年数据结构大题408 简介2.大题408 的主要考点3.大题408 的解题思路和方法4.大题408 的参考答案和解析5.总结正文:【2013 年数据结构大题408 简介】2013 年数据结构大题408 是计算机科学与技术领域中的一道重要的题目,主要考察的是数据结构的基础知识和应用能力。
数据结构是计算机科学与技术中的一个基础课程,它主要研究数据的组织和存储方式,以及如何高效地操作和处理数据。
大题408 是数据结构课程中的一道经典题目,它对于提高学生的数据结构应用能力和解决问题的能力有着重要的作用。
【大题408 的主要考点】大题408 的主要考点包括以下几个方面:1.数据结构的基础知识,如线性表、栈和队列、树和二叉树、图等。
2.数据结构的操作和处理,如插入、删除、排序、查找等。
3.数据结构的应用,如算法设计和分析、软件开发等。
4.数据结构的效率和优化,如时间复杂度和空间复杂度等。
【大题408 的解题思路和方法】解大题408 需要掌握以下几个解题思路和方法:1.认真阅读题目,理解题意,明确题目要求。
2.分析题目,找出考点和难点,确定解题思路和方法。
3.根据题目要求,设计数据结构和算法,进行编程实现。
4.调试程序,测试结果,检查是否符合题目要求。
5.对程序进行优化,提高程序的效率和正确性。
【大题408 的参考答案和解析】由于大题408 的具体题目内容未知,无法提供具体的参考答案和解析。
但是,可以根据以上的解题思路和方法,结合数据结构的基础知识和应用能力,进行解题和求解。
【总结】大题408 是数据结构课程中的一道经典题目,它对于提高学生的数据结构应用能力和解决问题的能力有着重要的作用。
解大题408 需要掌握数据结构的基础知识和应用能力,以及算法设计和分析的能力。
2013年自考数据结构课后习题答案
1第一章绪论1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。
● 数据:指能够被计算机识别、存储和加工处理的信息载体。
● 数据元素:就是数据的基本单位,在某些情况下,数据元素也称为元素、结点、顶点、记录。
数据元素有时可以由若干数据项组成。
● 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
通常数据类型可以看作是程序设计语言中已实现的数据结构。
● 数据结构:指的是数据之间的相互关系,即数据的组织形式。
一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。
● 逻辑结构:指数据元素之间的逻辑关系。
● 存储结构:数据元素及其关系在计算机存储器内的表示,称为数据的存储结构.● 线性结构:数据逻辑结构中的一类。
它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都有且只有一个直接前趋和一个直接后继。
线性表就是一个典型的线性结构。
栈、队列、串等都是线性结构。
● 非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。
数组、广义表、树和图等数据结构都是非线性结构。
1.2 试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。
答:例如有一张学生体检情况登记表,记录了一个班的学生的身高、体重等各项体检信息。
这张登记表中,每个学生的各项体检信息排在一行上。
这个表就是一个数据结构。
每个记录(有姓名,学号,身高和体重等字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一就确定了这个表的逻辑结构是线性结构。
这个表中的数据如何存储到计算机里,并且如何表示数据元素之间的关系呢? 即用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢? 这就是存储结构的问题。
在这个表的某种存储结构基础上,可实现对这张表中的记录进行查询,修改,删除等操作。
台湾省数据库入门摘要
1、假设K1,…,Kn就是n个关键词,试解答:试用二叉查找树得插入算法建立一棵二叉查找树,即当关键词得插入次序为K1,K2,…,Kn 时,用算法建立一棵以LLINK / RLINK 链接表示得二叉查找树。
2、本题应使用深度优先遍历,从主调函数进入dfs(v)时,开始记数,若退出dfs()前,已访问完有向图得全部顶点(设为n个),则有向图有根,v为根结点。
将n个顶点从1到n编号,各调用一次dfs()过程,就可以求出全部得根结点.题中有向图得邻接表存储结构、记顶点个数得变量、以及访问标记数组等均设计为全局变量。
建立有向图g得邻接表存储结构参见上面第2题,这里只给出判断有向图就是否有根得算法.intnum=0, visited[]=0 //num记访问顶点个数,访问数组visited初始化。
const n=用户定义得顶点数;AdjList g ; //用邻接表作存储结构得有向图g。
void dfs(v){visited [v]=1; num++;//访问得顶点数+1if (num==n) {printf(“%d就是有向图得根.\n”,v); num=0;}//ifp=g[v]、firstarc;while (p){if (visied[p—>adjvex]==0) dfs (p-〉adjvex);p=p-〉next;} //whilevisited[v]=0; num--; //恢复顶点v}//dfsvoid JudgeRoot()//判断有向图就是否有根,有根则输出之。
{static inti ;for (i=1;i〈=n;i++ ) //从每个顶点出发,调用dfs()各一次。
{num=0; visited[1、、n]=0; dfs(i); }}// JudgeRoot算法中打印根时,输出顶点在邻接表中得序号(下标),若要输出顶点信息,可使用g[i]、v ertex。
3、设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A 得后面插入结点B得操作序列(设双向链表中结点得两个指针域分别为llink与rlink)。
2013台湾省数据结构基础考试重点和考试技巧
1、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一C)不含回路 D)有n条边2、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。
A)13 B)33 C)18 D)403、以下属于顺序存储结构优点的是( A )。
A) 存储密度大B) 插入运算方便C)删除运算方便D)可方便地用于各种逻辑结构的存储表示4、设一数列的顺序为1,2,3,4,5,6,通过栈结构不可能排成的顺序数列为( B )。
A)3,2,5,6,4,1 B)1,5,4,6,2,3C)2,4,3,5,1,6 D)4,5,3,6,2,15、与无向图相关的术语有( C )。
A)强连通图 B)入度C)路径 D)弧6、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a??11为第一个元素,其存储地址为1,每元素占1个地址空间,则a85的地址为( B )。
A)13 B)33 C)18 D)407、下列序列中,执行第一趟快速排序后得到的序列是( A )。
A)[d,a,e,d,b]f[h,g] B) [c,e,a,d]f[h,g,b]C) [g,a,e,c,b]f[d,h] D) [a,b,c,d,]f[e,g,h]8、在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行( A )。
A)q->next=s; s->next=p; B)s->next=p->next; p->next=s;C)p->next=s->next; s->next=p D)p->next=s; s->next=q;9、已知广义表L=((x,y,z),a,(u,t,w)),从L 表中取出原子项t 的操作是( D )。
A) Head(Head(Tail(Tail(L))))B) Tail(Head(Head(Tail(L))))C) Head(Tail(Head(Tail(L))))D)Head(Tail(Head(Tail(Tail(L)))))10、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、给出折半查找的递归算法,并给出算法时间复杂度性分析。
2、数组A和B的元素分别有序,欲将两数组合并到C数组,使C仍有序,应将A和B拷贝到C,只要注意A和B数组指针的使用,以及正确处理一数组读完数据后将另一数组余下元素复制到C中即可。
void union(int A[],B[],C[],m,n)
//整型数组A和B各有m和n个元素,前者递增有序,后者递减有序,本算法将A和B归并为递增有序的数组C。
{i=0; j=n-1; k=0;// i,j,k分别是数组A,B和C的下标,因用C描述,下标从0开始while(i<m && j>=0)
if(a[i]<b[j]) c[k++]=a[i++] else c[k++]=b[j--];
while(i<m) c[k++]=a[i++];
while(j>=0) c[k++]=b[j--];
}算法结束
4、要求二叉树按二叉链表形式存储。
15分
(1)写一个建立二叉树的算法。
(2)写一个判别给定的二叉树是否是完全二叉树的算法。
BiTree Creat() //建立二叉树的二叉链表形式的存储结构
{ElemType x;BiTree bt;
scanf(“%d”,&x); //本题假定结点数据域为整型
if(x==0) bt=null;
else if(x>0)
{bt=(BiNode *)malloc(sizeof(BiNode));
bt->data=x; bt->lchild=creat(); bt->rchild=creat();
}
else error(“输入错误”);
return(bt);
}//结束 BiTree
int JudgeComplete(BiTree bt) //判断二叉树是否是完全二叉树,如是,返回1,否则,返回0
{int tag=0; BiTree p=bt, Q[]; // Q是队列,元素是二叉树结点指针,容量足够大
if(p==null) return (1);
QueueInit(Q); QueueIn(Q,p); //初始化队列,根结点指针入队
while (!QueueEmpty(Q))
{p=QueueOut(Q); //出队
if (p->lchild && !tag) QueueIn(Q,p->lchild); //左子女入队
else {if (p->lchild) return 0; //前边已有结点为空,本结点不空
else tag=1; //首次出现结点为空
if (p->rchild && !tag) QueueIn(Q,p->rchild); //右子女入队
else if (p->rchild) return 0; else tag=1;
} //while
return 1; } //JudgeComplete
3、根据二叉排序树中序遍历所得结点值为增序的性质,在遍历中将当前遍历结点与其前驱结点值比较,即可得出结论,为此设全局指针变量pre(初值为null)和全局变量flag,初值为true。
若非二叉排序树,则置flag为false。
#define true 1
#define false 0
typedef struct node
{datatype data; struct node *llink,*rlink;} *BTree;
void JudgeBST(BTree t,int flag)
// 判断二叉树是否是二叉排序树,本算法结束后,在调用程序中由flag得出结论。
{ if(t!=null && flag)
{ Judgebst(t->llink,flag);// 中序遍历左子树
if(pre==null)pre=t;// 中序遍历的第一个结点不必判断
else if(pre->data<t->data)pre=t;//前驱指针指向当前结点
else{flag=flase;} //不是完全二叉树
Judgebst (t->rlink,flag);// 中序遍历右子树
}//JudgeBST算法结束
4、给定n个村庄之间的交通图,若村庄i和j之间有道路,则将顶点i和j用边连接,边上的Wij表示这条道路的长度,现在要从这n个村庄中选择一个村庄建一所医院,问这所医院应建在哪个村庄,才能使离医院最远的村庄到医院的路程最短?试设计一个解答上述问题的算法,并应用该算法解答如图所示的实例。
(20分)
5、4、void LinkList_reverse(Linklist &L)
//链表的就地逆置;为简化算法,假设表长大于2
{
p=L->next;q=p->next;s=q->next;p->next=NULL;
while(s->next)
{
q->next=p;p=q;
q=s;s=s->next; //把L的元素逐个插入新表表头
}
q->next=p;s->next=q;L->next=s;
}//LinkList_reverse
6、编程实现单链表的就地逆置。
23.在数组 A[1..n]中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个.
7、若第n件物品能放入背包,则问题变为能否再从n-1件物品中选出若干件放入背包(这时背包可放入物品的重量变为s-w[n])。
若第n件物品不能放入背包,则考虑从n-1件物品选若干件放入背包(这时背包可放入物品仍为s)。
若最终s=0,则有一解;否则,若s<0或虽然s>0但物品数n<1,则无解。
(1)s-w[n],n-1 //Knap(s-w[n],n-1)=true
(2)s,n-1 // Knap←Knap(s,n-1)
8、给定n个村庄之间的交通图,若村庄i和j之间有道路,则将顶点i和j用边连接,边上的Wij表示这条道路的长度,现在要从这n个村庄中选择一个村庄建一所医院,问这所医院
应建在哪个村庄,才能使离医院最远的村庄到医院的路程最短?试设计一个解答上述问题的算法,并应用该算法解答如图所示的实例。
20分
void Hospital(AdjMatrix w,int n)
//在以邻接带权矩阵表示的n个村庄中,求医院建在何处,使离医院最远的村庄到医院的路径最短。
{for (k=1;k<=n;k++) //求任意两顶点间的最短路径
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (w[i][k]+w[k][j]<w[i][j]) w[i][j]=w[i][k]+w[k][j];
m=MAXINT; //设定m为机器内最大整数。
for (i=1;i<=n;i++) //求最长路径中最短的一条。
{s=0;
for (j=1;j<=n;j++) //求从某村庄i(1<=i<=n)到其它村庄的最长路径。
if (w[i][j]>s) s=w[i][j];
if (s<=m) {m=s; k=i;}//在最长路径中,取最短的一条。
m记最长路径,k记出发顶点的下标。
Printf(“医院应建在%d村庄,到医院距离为%d\n”,i,m);
}//for
}//算法结束
对以上实例模拟的过程略。
各行中最大数依次是9,9,6,7,9,9。
这几个最大数中最小者为6,故医院应建在第三个村庄中,离医院最远的村庄到医院的距离是6。
1、对图1所示的连通网G,请用Prim算法构造其最小生成树(每选取一条边画一个图)。
9、#define maxsize 栈空间容量
void InOutS(int s[maxsize])
//s是元素为整数的栈,本算法进行入栈和退栈操作。
{int top=0; //top为栈顶指针,定义top=0时为栈空。
for(i=1; i<=n; i++) //n个整数序列作处理。
{scanf(“%d”,&x); //从键盘读入整数序列。
if(x!=-1) // 读入的整数不等于-1时入栈。
if(top==maxsize-1){printf(“栈满\n”);exit(0);}
else s[++top]=x; //x入栈。
else //读入的整数等于-1时退栈。
{if(top==0){printf(“栈空\n”);exit(0);}
else printf(“出栈元素是%d\n”,s[top--]);}
}
}//算法结。