/*x是2开始比a[1]小的最小者下标,后面没有,即x不变*/
elseif(a[i]>a[y])y=i;
/*y是2开始比a[0]大的最大者下标,即132*/
ch(&a[x],&a[y]);/*交换a[x]和a[y],5和132*/
for(i=0;i<10;i++)printf(“%d,”,a[i]);/*打印数组*/
}
原来数组:
32,5,18,56,98,52,78,15,132,112
最后结果:
32,132,18,56,98,52,78,15,5,112
34、#include
voidmain(){
charstr[]=”0342201411”;
staticinta[10];
inti;char*p;
for(i=0;i<10;i++)a[i]=0;
for(p=str;*p!
=’\0’;p++){
i=*p-‘0’;
a[i]++;
}
for(i=0;i<10;i++)printf(“%d”,a[i]);
}
a[i]开始全是0。
p从str的头部开始向尾部走,i是str[]的字符对应的数字,将a[i]++;
注意str数组是0342201411
其中有2个0,故a[0]=2
其中有1个3,故a[3]=1
其中有2个4,故a[4]=2
其中有2个2,故a[2]=2
其中有3个1,故a[1]=3
没有比4大的数字,故a[5-9]保持0
最后结果:
2321200000
三、程序填空题(2小题,每空4分,共20分)
35、下面程序求出二维数组的最大值
#include
#definem3
#definen4
intfindmax(inta[][n])
{inti,j,max=a[0][0];
for(i=0;i(1)i++____)
for(j=0;jif(a[i][j]>max)max=a[i][j];
_____
(2)returnmax____________;
}
voidmain(){
inti,j,max,_____(3)a[m][n]_____;
for(i=0;i(1)____)
for(j=0;jscanf(“%d”,&a[i][j]);
max=findmax(a);
printf(“%d”,max);
}
36、下面程序求出100-200之间的全部素数
#include
voidmain(){
intm,k,i;
for(m=101;m<=200;m=m+2)
{k=sqrt(m);
for(i=2;i<=k;__(4)i++____)
if(m%i==0)__(5)break_______;
if(i>k)printf(“%d”,m);
}
}
09年专升本数据结构考题解答(共100分)
一、单项选择题(12小题,每小题2分,共24分)
1、要表示高校校、系、班级的有关数据及其关系,选择______比较合适。
A.线性结构B.树结构
C.图结构D.集合结构
2、下列函数中复杂度最小的是
A.T(n)=nlog2n+5000n
B.T(n)=n2-8000n
C.T(n)=nlog22n-6000n
D.T(n)=2nlog22n-7000n
nlog22n=nlog22+log2n=n1+log2n=n*nlog2n
3、已知一个栈s以及一个输入序列(A,B,C,D,E),每个元素按照A,B,C,D,E顺序进栈一次,进栈后可立即出栈,也可在栈中停留一段时间后再出栈,则不能得到()序列。
A.A、B、C、D、EB.B、A、E、D、C
C.C、B、A、D、ED.D、C、A、B、E
4、平均排序效率最好的排序方法是()。
A.直接插入排序B.快速排序
C.简单选择排序D.冒泡排序
5、某链表中最常用的操作是在已知的一个结点之前插入一个新结点和删除其之前一个结点,则采用()存储方式最节省运算时间。
A.双向链表B.带头指针的单向链表
C.带尾指针的单向链表D.单向循环链表
6、在逻辑结构不变的情况下,不是导致一个图的遍历序列不唯一的因素是()。
A.出发点不同B.存储(物理)结构不同
C.遍历方法不同D.画法不同
7、散列函数有一个共同的要求,即函数值应当尽量以()取其值域的每个值。
A.最大概率B.最小概率
C.正态分布概率D.均等概率
8、下面()方法可以判断出一个图中是否存在环(回路)。
A.排序B.深度和广度遍历
C.求最短路径D.求关键路径
9.最佳二叉搜索(排序)树是()。
A.关键码个数最小的二叉搜索树
B.退化为线性的二叉搜索树,
C.搜索中平均比较次数最小的二叉搜索树
D.任何结点的度数为0或2的二叉搜索树
10.()是数据的基本单位,即数据集合(对象)中的个体。
A.数据结构B.数据项
C.数据元素D.数据对象
11.(线性)表是一个()。
A.有限序列,可以为空B.有限序列,不能为空
C.无限序列,可以为空D.无限序列,不能为空
12.树是结点的集合,它()根结点。
A.有0个或1个B.有0个或多个
C.有且只有1个D.有1个或1个以上
二、填空题(本大题共7小题,每空2分,共16分)
请将答案写在答题纸相应的位置上。
13.在有n个顶点的有向图中,每个顶点的度(=入度+出度)最大可达(2n-2)。
14.以下程序段的时间复杂度是()。
i=0;j=0;
while(i+j<=n)
{
if(i>j)j++;
elsei++;
}
每次只做i++或j++,不会同时i++而且j++,
n的值不变,因此循环n次,复杂度O(n)
15.右图所示的二叉树后序遍历的结果是(EDCBIHJGFA)。
16.在一个双向链表中p所指结点之前插入一个由指针s所指的新结点,写出可执行的操作序列:
()。
(前指和后指的指针域分别为prior和next)
1.s->prior=p->prior;
2.s->next=p;1和2顺序可换
3.p->prior->next=s;
4.p->prior=s;注意p->prior要最后改变,因为之前要用
17.(线性)表有两种存储结构:
顺序存储