1、第 1 页 (共 9 页)一、单项选择题 1、在以下的叙述中,正确的是( A )。A. 线性表的线性存储结构优于链表存储结构B. 二维数组是其数据元素为线性表的线性表C. 栈的操作方式是先进先出D. 队列的操作方式是先进后出2、判定一个循环队列qu(最多元素为m0)为空的条件是( A )。A. qu-front=qu-rearB. qu-front!=qu-rearC. qu-front=(qu-rear+1)%m0D. qu-front!=(qu-rear+1)%m03、向一个栈顶指针为hs的链栈中插入一个s所指结点时,则执行( C )。A. hs-next=s; B. s-next=hs-
2、next;hs-next=s;C. s-next=hs;hs=s; D. s-next=hs;hs=sh-next4、串是一种特殊的线性表,其特殊性体现在( B )。A. 可以顺序存储 B. 数据元素是一个字符C. 可以链接存储 D. 数据元素可以是多个字符5、设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分按行序存放在一维数组B1,n(n-1)/2中,对下三角部分中任一元素a i,j(ij),在一维数组B的下标位置k的值是( B )。A. i(i-1)/2+j-1 B. i(i-1)/2+jC. i(i+1)/2+j-1 D. i(i+1)/2+j第 2 页 (共 9 页)6、将递归算法
3、转换成对应的非递归算法时,通常需要使用( A )。A. 栈 B. 队列 C. 链表 D. 树7、树的基本遍历策略可分为先根遍历和后根遍历叉树的基本遍历策略可分为先序遍历、中序遍历和后序遍历。这里,我们把由树转化得到的二叉树叫做这棵树对应的二叉树。结论_A_是正确的。A. 树的先根遍历序列与其对应的二叉树的先序遍历序列相同B. 树的后根遍历序列与其对应的二叉树的后序遍历序列相同C. 树的先根遍历序列与其对应的二叉树的中序遍历序列相同D. 以下都不对8、对一个满二叉树,m个树叶,n个结点,深度为h,则( D )。A. n=h+m B. h+m=2n C. m=h-1 D. n=2h-19、具有7个
4、顶点的无向图至少应有( A )条边才能确保是一个连通图。A. 5 B. 6 C. 7 D. 810、判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以利用( D )。A. 求关键路径的方法 B. 求最短路径的Dijkstra方法C. 宽度优先遍历算法 D. 深度优先遍历算法11、有一个有序表为1,3,9,12,32,41,45,62,75,77,82,95,100,当二分查找值为82的结点时,( C )次比较后查找成功。A. 1 B. 2 C. 4 D. 812、如果要求一个线性表既能较快地查找,又能适应动态变化的要求,可以采用_A_查找方法。A. 分块 B. 顺序 C. 二分 D.
5、 散列13、在所有排序方法中,关键字比较的次数与记录的初始排列次序无关第 3 页 (共 9 页)的是_D_。A. 希尔排序 B. 起泡排序 C. 插入排序 D. 选择排序14、快速排序方法在( C )情况下最不利于发挥其长处。A. 要排序的数据量太大 B. 要排序的数据中含有多个相同值C. 要排序的数据已基本有序 D. 要排序的数据个数为奇数15、索引无序文件是指( A )。A. 主文件无序,索引表有序 B. 主文件有序,索引表无序C. 主文件有序,索引表有序 D. 主文件无序,索引表无序二、填空题(每空 2 分,共 30 分)16、下面程序段的时间复杂度是_O(m*n)_。for ( i=0
6、;inext=s;p-data=x;s=p;_。18、在hq的链队中,判定只有一个结点的条件是_hq-front=hq-rear_。19、已知二维数组Amn采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A00),Aij的地址是_LOC(A00)+(n*i+j)*k_。20、有如下递归方程:void print(int w)第 4 页 (共 9 页) int i;if (w!=0) print(w-1);for (i=1;iv2-v3-v6-v5-v4_,其从顶点v1出发的宽度优先搜索序列为_v1-v2-v5-v4-v3-v6_。第 5 页 (共 9 页)24、
7、在各种查找中,平均查找长度与结点个数n无关的查法方法是_哈希_。25、在对一组记录54,38,96,23,15,72,60,45,83进行直接插入排序时,当把第 7 个记录 60 插入到有序表时,为寻找插入位置需比较_3_次。26、顺序查找法的平均查找长度为_n(n+1)/2_;二分查找法的平均查找长度为_(n+1)*log2(n+1)/n-1_。三、解答操作题(每小题 5 分,共 20 分)27、已知序列503,87,512,61,908,170,897,275,653,462,采用基数排序法对该序列作升序排序时的每趟的结果。A0=170A1=61A2=512-462A3=503-653A5
8、=275A7=87-897A8=90828、设给定权集w=2,3,4,7,8,9,度构造关于w的一棵哈夫曼树,并求其加权路径长度wpl。29、对下图所示的树:(1)转换成对应的二叉树形式,并且说明转换规则;(2)写出前序、中序、后序遍历的结果;第 6 页 (共 9 页)30.现有稀疏矩阵 A 如下图所示,要求画出以下几种表示法。(1)三元组表示法(2)带行指针向量的单链表表示法 (3)十字链表示法。四、算法阅读题(每小题6分,共12分)31、下列算法的功能是实S串的逆序(串均采用顺序存储方式),请在空白处填入适当的内容。SeqString *invert (SegString *s) int
9、i;char tempfor (i=0; ilength/2; i+) temp=s-chi;s-chi=s-ch s-length-i+1 ;s-chs-length-i+1= temp ;return s ;32.下列算法的功能是实现链栈的进栈运算,请在空白处填入适当的内第 7 页 (共 9 页)容。 链栈的类型定义如下:Typedef struct stacknode DataType data;Struct stacknode *next; StackNode;Typedef struct StackNode *top;LinkStack;Void Push(LinkStack *s,
10、DataType x)StackNode p;*p=(StackNode *)malloc(sizeof(StackNode);p-data= x ;p-next= s-top ;s-top= p ; 五、算法设计题33、假设二叉树采用链接方法存储,编写一个函数复制一棵给定的二叉树。结点结构为:Copy(BiTree *T)if(!T)return NULL;BiTree *S=new BiTree;if(T-Lchild) S-Lchild=T-Lchild; Copy(T-Lchild);if(T-Rchild) S-Rchild=T-Rchild; Copy(T-Rchild);D 卷一
11、、单项选择题1. B 2. A 3. C 4. B 5. B 6. A 7. A 8. D 9. A 10. D 11. C 12. A 13. D 14. C 15. A第 8 页 (共 9 页)二、填空题(每小题2分,共30分) 16. O(m*n) 17. 先移动栈顶指针,后存入元素18. hq-front=hq-rear 19. LOC(A00)+(n*i+j)*k20. 答 12 23 3 34 4 4 4 23、 v1,v2,v3,v6,v5,v4 v1,v2,v5,v4,v3,v624、哈希表查找法 25、3 26、(n+1)/2 (n+1)*log2(n+1)/n-1三、操作题
12、(每小题5分,共20分)27、初始:503,87,512,61,908,170,897,275,653,462第1趟(按个位排序)170,61,462,512,503,653,475,87,897,908第2趟(按十位排序)503,908,512,653,61,462,170,175,87,897第3趟(按百位排序)61,87,170,275,462,503,512,653,897,90828、加权路径长度wpl=72+82+43+24+34+92=8029(1)(2) 前序:abcejfdghki中序:jefcgkhidba后序:jfekihgdcba30. 四、算法设计题(每小题 6 分,共 12 分)参考答案31.s-length-i+1TempReturn(s) 32. p-data=x;p-next=s-top;s-top=p;五、算法设计题(共8分)参考答案33.Btree *copy(btree *b)Btree *p;If (b!=NULL)第 9 页 (共 9 页) P=(btree *)malloc(sizeof(btree)p-data=b-data;p-left=copy(b-left);p-right=copy(b-right);return(p);Else return(NULL);