南京师范大学2003-2011地理信息系统考研专业一试题(6)
本站小编 免费考研网/2015-08-16
{
count++;
}
else
{
if(count>maxlen)
{
maxlen = count;
pos = i-maxlen;
}
count = 0;
}
} while(s[i]!='\0');
printf("The max length word is \"");
for(i=0;i<maxlen;i++)
{
printf("%c",s[pos+i]);
}
printf("\" and it's position is %d.\n",pos+1);
}
(4)编写算法输出从n个自然数中取k个(k<=n)所有组合。例如,当n=5,k=3时,你的算法
应该输出:543,542,541,532,531,521,432,431,421,321.(本题20分)
参考解法:
#include<stdio.h>
void f(int n,int k,int a[],int m)
{
int i;
if(k==0)
{
for(i=0;i<m;i++)
printf("%d",a[i]);
printf(" ");
}
else
{
for(i=n;i>=k;i--)
{
a[m] = i;
f(i-1,k-1,a,m+1);
}
}
}
void main()
{
int n,k,m=0;
int a[10];
printf("Please enter n and k :");
scanf("%d%d",&n,&k);
f(n,k,a,m);
printf("\n");
}
(5)试采用递归函数实现将任意位数的整数转换成字符串输出,要求在主函数中输入整数
并调用递归函数实现转换并输出结果,对于负数也能处理。(本题20分)
参考解法:
#include<stdio.h>
void numtostring(int n,char a[],int k)
{
if(k==0) return;
else
{
a[--k] = n%10 + 48;
n /= 10;
numtostring(n,a,k);
}
}
void main()
{
int n,m,k=0;
char a[100],sign=' ';
printf("Please input the number:");
scanf("%d",&n);
if(n<0) {sign = '-';n = -n;}
m = n;
while(m)
{
k++;
m /= 10;
}
a[k] = '\0';
numtostring(n,a,k);
printf("The number is :%c%s\n",sign,a);
}
(6)假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算
法将A和表B归并成一个按元素非递减有序(允许值相同)排列的线性表C,并要求利用原表
(即表A和表B)的结点空间存储放表。(本题20分)
参考解法:
typedef struct Node
{
ElemType data;
struct Node *next;
}LNode;
LNode * merge(LNode *A,LNode *B)
{
LNode *C;
LNode *pa,*pb,*pc;
pa = A->next; pb = B->next;
C = A; pc = C; pc->next = NULL;
while(pa && pb)
{
if(pa->data <= pb->data)
{
pc->next = pa;
pa = pa->next;
pc = pc->next;
pc->next = NULL;
}
else
{
pc->next = pb;
pb = pb->next;
pc = pc->next;
pc->next = NULL;
}
}
if(pa) pc->next = pa;
if(pb) pc->next = pb;
return C;
}
(7)如果一棵Huffman树T有n个叶子结点,那么树T有多少个结点,要求给出详细的算法,
然后再写出程序。(本题20分)
参考解答:
解题思路:
假设有10个节点分别为9,7,5,3,1,8,6,4,2,0
将这些节点按从小到大的顺序存入链表中即0,1,2,3,4,5,6,7,8,9
取出前两个最小的节点,组成一个新的节点再放入到链表中,如下:
1, 1 ,2,3,4,5,6,7,8,9
0 1
再对剩余的节点进行类似操作,直到剩余一个节点。
形成Huffman树后,然后统计节点的个数。
<1>void InsertNode(LinkList h,LNode *s)是将*s指向的节点插入到以h为头节点的链表中适当位置,
保证从小到大的排列顺序。
<2>void FormLinkList(LinkList &h,int a[],int n)将数组a[n]中的n个元素放入到以h为
头节点的链表中,保证链表从小到大有序排列;将调用InsertNode(LinkList h,LNode *s)函数。
<3>BiTree FormHuffman(LinkList h)是根据觛思路将带头节点的链表h逐步构建Huffman树,并将Huffman树返回。
<4>int count(BiTree root)是对Huffman树root的节点进行计数。
<5>void InOrder(BiTree root)和void printLinkList(LinkList h)是辅助函数,分别对
树进行中序遍历和对链表进行打印。
#include<stdio.h>
#include<stdlib.h>
#define N 10
typedef struct BiNode
{
int data;
struct BiNode *lchild,*rchild;
struct BiNode *next;
}LNode,*LinkList,BiNode,*BiTree;
void InsertNode(LinkList h,LNode *s)
{
LNode *p,*q;
p = h;
q = p->next;
while(q && q->data<=s->data)
{
p = q;
q = p->next;
}
p->next = s;
s->next = q;
(h->data)++;
}
void FormLinkList(LinkList &h,int a[],int n)
{
int i;
LNode *s;
if(!(h = (LNode *)malloc(sizeof(LNode)))) exit(0);
h->data = 0;
h->next = NULL;
h->lchild = NULL;
h->rchild = NULL;
for(i=0;i<n;i++)
{
if(!(s=(LNode *)malloc(sizeof(LNode)))) exit(0);
s->data = a[i];
s->next = NULL;
s->lchild = NULL;
s->rchild = NULL;
InsertNode(h,s);
}
}
BiTree FormHuffman(LinkList h)
{
LNode *p,*q;
BiNode *b;
if(h==NULL || h->data==0) return NULL;
else
{
while(h->data>1)
{
p = h->next;
q = p->next;
h->next = q->next;
(h->data) = h->data - 2;
if(!(b=(BiNode *)malloc(sizeof(BiNode)))) exit(0);
相关话题/地理
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-222013年兰州大学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