南京师范大学2003-2011地理信息系统考研专业一试题(7)

本站小编 免费考研网/2015-08-16


            b->data = p->data + q->data;
            b->next = NULL;
            b->lchild = p;
            b->rchild = q;
            InsertNode(h,b);
        }
        return (h->next);
    }
}

int count(BiTree root)
{
    if(root == NULL)    return 0;
    else if(root->lchild==NULL && root->rchild==NULL)   return 1;
    else
        return(
        count(root->lchild) +
        count(root->rchild) + 1);
}

void InOrder(BiTree root)
{
    if(root)
    {
        InOrder(root->lchild);
        printf("%d ",root->data);
        InOrder(root->rchild);
    }
}

void printLinkList(LinkList h)
{
    h = h->next;
    while(h)
    {
        printf("%d ",h->data);
        h = h->next;
    }
    printf("\n");
}

void main()
{
    int i;
    int a[N] = {9,7,5,3,1,8,6,4,2,0};
    LinkList h;
    BiTree root;

    FormLinkList(h,a,N);
    printLinkList(h);

    root = FormHuffman(h);
    InOrder(root);

    i = count(root);
    printf("\nTotal Number of BiNodes is %d.\n",i);
}

(8)对于二叉树T的两个结点N1和N2,我们应该选择树T结点的前序、中序和后序中哪两个
序列来判定结点N1必定是结点N2的祖先,并给出判断的方法。要求给出详细的算法,然后再
写出程序。(本题20分)
参考答案:
有前中后三种序列,我们该选择哪一种呢?
我们先来做一个假设:N1是N2的祖先。此时N2有两种情况,一是N2在N1的左子树中,二是N2在
N1的右子树中。
情况    N2在N1的左子树      N2在N1的右子树      结果
前序        N1...N2             N1...N2         相同
中序        N2...N1             N1...N2         不同
后序        N2...N1             N2...N1         相同
在前序序列中N1稳定排列于N2的前面,则N1有可能是N2的祖先,但并不代表N1一定是N2的祖先。
在后序序列中N1稳定排列于N2的后面,则N1有可能是N2的祖先,但并不代表N1一定是N2的祖先。
在中序序列中N1可能在N2的前面,也可能在N2的后面,这一点对我们判断N1是否可能是N2的祖先没有多大帮助。
由于中序序列存在这种不稳定性,我们只好采取前序和后序。
假如说有一种情况如下:
前序:...N1...N2...
后序:...N2...N1...
这两个序列,能判定N1是N2的祖先吗?
思考两个问题:
<1>N1是N2的祖先,则N1和N2的相对位置关系是上面的两个序列表现的这种前后关系吗?
<2>两个数列中N1和N2有这种前后关系,那N1一定是N2的祖先吗?
第1个问题,N1是N2的祖先,则N1和N2满足上述两个序列的前后关系。
第2个问题,不容易回答,因为当N1不是N2的祖先时,是否也能满足这种前后关系呢?
N1不是N2的祖先,分为两种情况:一是N2是N1的祖先;二是N2是N1的兄弟树的结点,而第二种
情况又要分两种:①N1是在左,N2在右;②N1在右,N2在左。
情况    N1是N2的祖先        N2是N1的祖先        N1在左,N2在右      N2在左,N1在右
前序       N1...N2             N2...N1              N1...N2             N2...N1
后序       N2...N1             N1...N2              N1...N2             N2...N1
后三组结果与第一组结果都不能完全相同,也就是说除了N1是N2祖先的情况,没有其它任何
情况可以产生上面的二个序列了,也就回答了第二个问题。
通过以上这些情况,可以看出前序和后序可以确定N1是否为N2的祖先。
#include<stdio.h>
int judge(char pre[],char post[],char ch1,char ch2)
{//pre[]代表前序序列,post[]代表后序序列,函数用检验ch1是否为ch2的祖先
    int i,k1=0,k2=0,flag=0;         //k1、k2分别用来记录字符ch2在前序和后序中位置
    while(pre[k1]!=ch2)  k1++;      //flag用来标识进行判断ch1是否是ch2的祖先
    while(post[k2]!=ch2) k2++;
    for(i=0;i<k1;i++)
    {
        if(pre[i]==ch1)
        {
            flag = 1;               //如果ch1在ch2的前面找到,则先假设ch1是ch2的祖先
            break;
        }
    }
    if(!flag)   return flag;        //如果ch1不在ch2前面,则返回
    else
    {
        flag = 0;                       //将flag重新赋值为0
        for(i=k2+1;post[i]!='\0';i++)   //进一步进行判断
            if(post[i]==ch1)
            {
                flag = 1;
                break;
            }
        return flag;
    }
}

void main()
{
    int i=0;
    char ch1,ch2,pre[100] = {"abdecfg"},post[100] = {"debfgca"};
    printf("请输入前序序列:");
    //gets(pre);
    puts(pre);
    printf("请输入后序序列:");
    //gets(post);
    puts(post);
    printf("请输入要查询的字符N1和N2(形式:N1,N2):");
    scanf("%c,%c",&ch1,&ch2);
    i = judge(pre,post,ch1,ch2);
    if(i)
        printf("%c是%c的祖先\n",ch1,ch2);
    else
        printf("%c不是%c的祖先\n",ch1,ch2);

南京师范大学2008年研究生入学考试试题-科目名称:C语言程序设计(含数据结构)
(1)一个数如果恰好等于它的因子之和,这个数就称为“完数”,6的因子为1、2、3,而
6=1+2+3,因此6是“完数”。编程找出1000之内的所有“完数”。(本题15分)
参考解法:
#include<stdio.h>
void main()
{
    int i,n,s;
    for(n=1;n<1000;n++)
    {
         s = 0;
         for(i=1;i<n;i++)
         {
            if(n%i==0) s += i;
         }
         if(n==s)   printf("%d is a perfect number.\n",n);
    }
}

(2)采用顺序结构存储串,编写一个函数Substring(s1,s2),用于判定s2是否s1的子串。
(本题15分)
参考解法:
#include<stdio.h>
int SubString(char *s1,char *s2)
{
    char *p,*q,*r;
    p = s1;
    while(*p)
    {
        q = p;

相关话题/地理

  • 领限时大额优惠券,享本站正版考研考试资料!
    大额优惠券
    优惠券领取后72小时内有效,10万种最新考研考试考证类电子打印资料任你选。涵盖全国500余所院校考研专业课、200多种职业资格考试、1100多种经典教材,产品类型包含电子书、题库、全套资料以及视频,无论您是考研复习、考证刷题,还是考前冲刺等,不同类型的产品可满足您学习上的不同需求。 ...
    本站小编 Free壹佰分学习网 2022-09-19
  • 2001-2008年西南大学人文地理学考研真题
    2001年人文地理学 一、 名词解释(15) 1、中东 2、地理大发现 3、大洋洲 4、尼罗河 5、巴黎盆地 二、 简述题(20) 1、世界地理环境结构的地域分异规律 2、战后科技革命对世界经济发展和产业分布的影响 三、 填图题(图) 在图上填出(15) 1、统一后的德国国界和国名(1) ...
    本站小编 免费考研网 2015-08-09
  • 华南师范大学人文地理学2002-2011历年考研真题(附答案)
    华南师范 大学 2011 硕士 研究生招生入学考试试卷 人文地理学 一、名词解释(每题 5 分,共 30 分) 1、因子生态分析法 2、容积率和建筑密度 3、城市发展的经济基础原理 4、产业集群 5、集聚与扩散 6、旅游规划 二、简答题(70 分) 1、请简述我国的区域空间规划体系。(15 分) ...
    本站小编 免费考研网 2015-07-22
  • 湖南师范大学经济地理学复试资料(整合)
    第一章 绪论 何谓经济地理学? 答:经济地理学是研究经济活动区位、空间组织及其地理环境相关系的学科。 试述经济地理学的研究对象。 答:经济地理学的研究对象包括:经济活动的内容、区位、空间 ...
    本站小编 免费考研网 2015-07-22
  • 2013年兰州大学818现代地理学(含自然地理学、经济地理学)+考研试题(回忆版)
    2013年兰州大学818现代地理学(现代地理学(含自然地理学、含自然地理学、经济 地理学) 地理学) 考研试题) 考研试题(考研试题(回忆版)回忆版) 一、名词解释(每题6分) 1、不整合 2、干洁空气 3、锋 4、雪线 5、黄土 6、土壤质地 7、生态系统 8、隐域性 二、简答题(每题8分) 1、岩石的结构与构造 2、沉积岩的基本 ...
    本站小编 网络资源 2015-07-16
  • 人文地理学 赵荣等 高等教育出版社(答案)
    第一章 绪论 1、 人文地理学在地理学中的地位和作用。 人文地理学是以人地关系的理论为基础,探讨各种人文现象的地理分布、扩散和变化,以及人类社会活动的地域结构的形成和发展规律的一门学科。又称人生地理学。它是地理学的两个主要分支学科之一,人文二字与自然地理学的自然二字相对应 ...
    本站小编 免费考研网 2015-07-16
  • 西北大学2015中国历史地理学考题
    西北大学2015中国历史地理学考题 一、名词解释 沿革地理学 地理环境决定论 新秦中 陈桥驿 统万城 关西和关东 二、简答题 1、简述中国历史时期人口变化特点及其影响。 2、简述毛乌素沙漠的形成原因。 3、简述中国历史上东西对峙的原因。 三、论述题 1、论述中国历史时期气候变迁及其影响。 2、论述安阳成为中国七大古都 ...
    本站小编 网络资源 2015-07-15
  • 西北师范大学2011年,2012年自然地理试题
    2010 一名词解释 1沉积建造 2米兰科维奇理论 3水分循环 4土壤肥力 5趋同适应 6洪积扇 7正断层 8海陆风 二简答题 1分析气候与生物对土壤形成的作用与影响 2简要分析我国西北干旱气候的形成原因. 3分析对比准平原和山麓面的形成过程. 4简述农业生态系统的特点. 5简述冰川对地理环境的影响 6简要分析地球自转的 ...
    本站小编 免费考研网 2015-07-01
  • 中科院寒旱所2007-1997硕士入学考试真题 [自然地理]
    自然地理学 1997年硕士研究生入学考试题 一、名词解释 1、沉积相与沉积韵律 2、气旋与反气旋 3、土壤与土地 4、径流系数与径流模数(写出单位) 5、生物群落与生态系统 二、回答问题 1、 季风环流是怎样形成的?简述热带季风气候、副热带季风气候和温带季风气候各自发育的区域和气候特点。(13分) 2、 自然带在空间 ...
    本站小编 免费考研网 2015-07-01
  • 中科院寒旱所2006自然地理学考博试题答案
    自然地理学 一、名词解释 1、季风 2、水循环 3、大气环流 4、洋流 5、生态系统 季风:大陆和海洋间的广大地区,以一年为周期、随着季节变化而方向相反的风系,称为季风。季风是海陆间季风环流的简称,它是由大尺度的海洋和大陆间的热力差异形成的大范围热力环流。夏季由海洋吹向大陆的风称为夏季风;冬季由大陆吹向海洋的 ...
    本站小编 免费考研网 2015-07-01
  • 中科院寒旱所考博地理名词解释(答案整理)
    名词解释: 1、季风(monsoon):是由于大陆及邻近海洋之间存在的温度差异而形成大范围盛行的、风向随季节有显著变化的风系,具有这种大气环流特征的风称为季风。 大陆和海洋间的广大地区,以一年为周期、随着季节变化而方向相反的风系,称为季风。季风是海陆间季风环流的简称,它是由大尺度的海洋和大陆间的热力差异形成 ...
    本站小编 免费考研网 2015-07-01