- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2009全国硕士研究生入学统一考试计算机学科统考大纲样题答案
一、 单项选择题
1.A 2.A 3.D 4.B 5.C 6.B 7.B 8.B
二、综合应用题
41.解:该无向图如下图。采用算法。顶点Dijkstra 1 到其余各点的最短路径的求解过程如下表。
已考察的点 顶点2 顶点3 顶点4 顶点5 1(-) (1,4) (1,2) (-,∞) (1,8) 3(1) (1,4) - (3,3) (1,8) 4(3) (1,4) - - (4,6) 2(1) - - - (4,6) 5(4) - - - -
其中,“已考察的点”指在该步骤中,从源点到这些顶点(当前行及其前面所有行中的点)的最短距离已经求出,括号中表示的是从源点到该点的最短路径经过的最后一个顶点,格式为(顶点,顶点)。其他列表示源点到其他待选顶点的最短距离和该最短路径经过的最后一个顶点,格式为(顶点编号,最短距离)。完成后,将“已考察的点”列中的(顶点,顶点)对应的边加粗,即是所求的路径在图中的表示。追溯“已考察的点”列中(顶点,顶点)组合,也可得到源点(顶点1)到各点的最短路径。
结果如下。
顶点1-顶点2(最短距离为4):1-2
顶点1-顶点3(最短距离为2):1-3
顶点1-顶点4(最短距离为3):1-3-4
顶点1-顶点5(最短距离为6):1-3-4-5
42. 解:C++代码实现如下。在Ubuntu 8.10下实现通过。
#include iostream
#include vector
using namespace std;
结点结构//
struct Node
{
int data;
struct Node* left;
struct Node* right;
};
void printPath( vectorNode* path )
{
for ( int i = 0, n = path.size(); i n; i++ )
{
cout path[i]-data;
}
coutendl;
}
遍历,从根结点到指定结点的路径//theNode
void postorder( Node* pNode, Node* theNode, vectorNode* path, vectorNode* longest)
{
if ( pNode == theNode)
{
if ( longest.size() path.size() )
{
longest = path;
}
else
{
longest.push_back(theNode);
return ;
}
}
else if (pNode != NULL)
{
path.push_back( pNode );
postorder( pNode-left, theNode, path, longest);
postorder( pNode-right,theNode, path, longest);
path.pop_back();
}
else return ;
}
//find the longest path from root to theNode.
void GetLongestPath( Node* root, Node* theNode)
{
vectorNode* path;
vectorNode* longest;
postorder( root, theNode, path, longest);
coutlongest path:;
printPath( longest );
}
下面是测试代码(树的结构如右图所示):
int main()
{ //为树的每个结点分配内存
Node* nodA = new Node; Node* nodB = new Node;
Node* nodC = new Node; Node* nodD = new Node;
Node* nodE = new Node; Node* nodF = new Node;
Node* nodG = new Node; Node* nodH = new Node;
给每个结点赋值,其中值域作为该结点的编号。 //data
nodH-data = 8; nodH-left =NULL; nodH-right =NULL;
nodG-data = 7; nodG-left =NULL; nodG-right =NULL;
nodF-data = 6;
原创力文档


文档评论(0)