C语言学习.docx
- 文档编号:7578658
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:9
- 大小:21.51KB
C语言学习.docx
《C语言学习.docx》由会员分享,可在线阅读,更多相关《C语言学习.docx(9页珍藏版)》请在冰豆网上搜索。
C语言学习
一.应用题:
1经过两趟排序后的数据序列(2,1,4,9,8,10,6,20).对于快速排序,冒泡排序,选择排序和插入排序
(1)该排序属于哪种排序.
(2)给出初始的数据排序和两趟排序排序过程.
2.有一个二叉树按顺序存储结构存放在一维数组中,如图所示
1 2 3 4 5 6 7 8 9 10 11
A C B E D G
画出该树后序线索树的存储结构示意图.
3.下图为无向带权图,按prim算法画出可能的最小生成树。
4.若有序表的关键字序列为(b,c,d,e,f,g,q,r,s,t)使用折半查找
(1)写出在查找关键字b的过程,先后进行比较的关键字序列
(2)画出该有序表的判定树。
5.在平衡二叉树中插入一个结点后造成了不平衡。
设最低的不平衡结点为A。
并已知A的左孩子B的平衡因子为0右孩子C的平衡因子为1。
(1)若调整以使其平衡画出该调整过程示意图。
(2)给出调整过程中的指针变化的局部算法。
二.算法阅读:
Lnode
datanext
1.下列算法对带头结点的单链表L进行简单选择排序,使得L中的元素按值从小到大排列。
(1)给出单链表L的存储结构定义(typedef)
(2)Voidselect(linkedlist L)
{
Linkedlistp,q,min;
Elemtype rcd;
P=
(1) ;
While(p){
Min=p
Q=p->next;
While(a){
If
(2)
Min=q
Q=q->next;
}//while
If (3) {
Rcd=p->data;
p->data=min->data;
min->data=rcd
}//if
(4) ;
}//while
}//selectsort
2.已知带头结点的单链表中的关键字为整数,为提高查找效率需将它改建为采用拉链法处理冲突的散列表设散列表的长度为m散列函数为hash(key)=key%m
链表的结点结构为
keynext
(1)画出此散列表的存储结构示意图。
(2)
Void L-to-H (linklistL,linklistH[],intm).
{//由带头结点的单链表L生成散列表H。
散列表生成之后原链表不再存在
IntI,j;
Linklistp,q;
For(i=0;i H[i]= (1) ; P=L->next; While(p){ q=p->next: j=p->key%m; (2) H[j]=p; (3) }//while Free(L); }//L-to-H 三.算法设计: 1.用图的广度优先遍历求解邻接表的有向图的两点间的连通性 2.用图的深度优先遍历递归地求解邻接矩阵的无向图的两点间的连通性 3.先序遍厉非递归地求解二叉链表的二叉树中非叶子结点个数。 4.先序遍历递归求解二叉链表的二叉树中叶子结点的个数。 期末样卷参考答案 一.是非题(每题1分共10分) 1.线性表的链式存储结构优于顺序存储结构。 F 2.栈和队列也是线性表。 如果需要,可对它们中的任一元素进行操作。 F 3.字符串是数据对象特定的线性表。 T 4.在单链表P指针所指结点之后插入S结点的操作是: P->next=S;S->next=P->next;F 5.一个无向图的连通分量是其极大的连通子图。 T 6.邻接表可以表示有向图,也可以表示无向图。 T 7.假设B是一棵树,B′是对应的二叉树。 则B的后根遍历相当于B′的中序遍历。 T 8.通常,二叉树的第i层上有2i-1个结点。 F 9.对于一棵m阶的B-树,树中每个结点至多有m个关键字。 除根之外的所有非终端结点至少有ém/2ù个关键字。 F 10.对于任何待排序序列来说,快速排序均快于起泡排序。 F 二.选择题(每题2分共28分) 1.在下列排序方法中,(c)方法平均时间复杂度为0(nlogn),最坏情况下时间复杂度为0(n2);(d)方法所有情况下时间复杂度均为0(nlogn)。 a.插入排序 b.希尔排序 c.快速排序 d.堆排序 2.在有n个结点的二叉树的二叉链表表示中,空指针数为(b)。 a.不定 b.n+1 c.n d.n-1 3.下列二叉树中,(a)可用于实现符号不等长高效编码。 a.最优二叉树 b.次优查找树 c.二叉平衡树d.二叉排序树 4.下列查找方法中,(a)适用于查找有序单链表。 a.顺序查找 b.二分查找 c.分块查找 d.哈希查找 5.在顺序表查找中,为避免查找过程中每一步都检测整个表是否查找完毕,可采用(a)方法。 a.设置监视哨 b.链表存贮 c.二分查找 d.快速查找 6.在下列数据结构中,(c)具有先进先出特性,(b)具有先进后出特性。 a.线性表 b.栈 c.队列 d.广义表 7.具有m个结点的二叉排序树,其最大深度为(f),最小深度为(b)。 a.log2m b.└log2m┘+1 c.m/2 d.┌m/2┐-1 e.┌m/2┐ f.m 8.已知一组待排序的记录关键字初始排列如下: 56,34,58,26,79,52,64,37,28,84,57。 下列选择中(c)是快速排序一趟排序的结果。 (b)是希尔排序(初始步长为4)一趟排序的结果。 (d)是基数排序一趟排序的结果。 (a)是初始堆(大堆顶)。 a.84,79,64,37,57,52,58,26,28,34,56。 b.28,34,57,26,56,52,58,37,79,84,64。 c.28,34,37,26,52,56,64,79,58,84,57。 d.52,34,64,84,56,26,37,57,58,28,79。 e.34,56,26,58,52,64,37,28,79,57,84。 f.34,56,26,58,52,79,37,64,28,84,57。 三.填空题(每题2分共20分) 1.有向图的存储结构有(邻接矩阵)、(邻接表)、(十字链表)等方法。 2.已知某二叉树的先序遍历次序为afbcdeg,中序遍历次序为cedbgfa。 其后序遍历次序为(edcgbfa)。 层次遍历次序为(afbcgde)。 3.设有二维数组A5x7,每一元素用相邻的4个字节存储,存储器按字节编址。 已知A00的存储地址为100。 则按行存储时,元素A14的第一个字节的地址是(144);按列存储时,元素A14的第一个字节的地址是(184)。 4.请在下划线上填入适当的语句,完成以下法算。 StatusPreordertraverse(BitreeT,Status(*Visit)(Telemtypee)){ //先序非递归遍历二叉树。 Initstack(S); Push(S,T); While(! stackempty(S)) {While(gettop(S,p)&&p){visit(p->data);push(S,p->lchild;} Pop(S,p); If(! stackempty(s)){pop(S,p); push(S,p->rchild);} } returnok; 四.简答题(每题5分共25分) 1.将图示森林转换为二叉树,并对该二叉树中序全序线索化。 h d a j i b f e c m l k g 2.已知Hash函数为H(K)=Kmod13,散列地址为0--14, 用二次探测再散列处理冲突,给出关键字(23,34,56,24,75,12,49,52,36,92,06,55)在散列 地址的分布。 0 1 2 3 4 5 6 7 8 9 1011121314 3.右图为一棵3阶B树。 (20,25) a.画出在该树上插入元素15后的B树。 /│\ b.接着,再删除元素35,画出删除后的B树。 (10,14)(21)(35) 4.已知某无向图的邻接表存储结构如图所示。 a.请画出该图。 b.根据存储结构给出其深度优先遍历序列及广度优先遍历序列。 c.画出其深度优先生成树及广度优先生成树。 0a 2 4 /\ 1b 2 3 4 /\ 2c 0 1 4 /\ 3d 1 /\ 4e 0 1 2 /\ 5.设在某通信系统中使用了八个字符,它们出现的频率分别为0.08,0.05,0.1,0.12,0.26,0.18,0.14,0.07,试构造一棵赫夫曼树,并给出赫夫曼编码。 五.算法设计题(共17分) 1.单链表结点的类型定义如下: typedefstructLNode{ intdata; structLNode*next; }LNode,*Linklist; 写一算法,将带头结点的有序单链表A和B合并成一新的有序表C。 (注: 不破坏A和B的原有结构.) Merge(LinklistA,LinklistB,Linklist&C) voidMerge(LinklistA,LinklistB,Linklist&C) {C=(Linklist)malloc(sizeof(LNode)); pa=A->next;pb=B->next;pc=C; while(pa&&pb) {pc->next=(Linklist)malloc(sizeof(LNode)); pc=pc->next; if(pa->data<=pb->data) {pc->data=pa->data;pa=pa->next;} else {pc->data=pb->data;pb=pb->next;} } if(! pa)pa=pb; while(pa) {pc->next=(Linklist)malloc(sizeof(LNode)); pc=pc->next; pc->data=pa->data;pa=pa->next; } pc->next=NULL; } 2.二叉树用二叉链表存储表示。 typedefstructBiTNode{ TelemTypedata; StructBiTNode*lchild,*rchild; }BiTNode,*BiTree; 编写一个复制一棵二叉树的递归算法。 BiTreeCopyTree(BiTreeT){ if(! T)returnNULL; if(! (newT=(BiTNode*)malloc(sizeof(BiTNode)))) exit(Overflow); newT->data=T->data; newT->lchild=CopyTree(T->lchild); newT->rchild=CopyTree(T->rchild); returnnewT; 一、单项选择题(每题2分,共40分) 1、一个向量第一个元素的存储地址是100,每个元素的长度为2,则第五个元素的地址是(A) A、110 B、108 C、100 D、120 2、树最适合用来表示(C) A、有序数据元素 B、无序数据元素 C、元素之间具有分支层次关系的数据 D、元素之间无联系的数据 3、在一个链队中,假设F和R分别为队首和队尾指针,则删除一个结点的运算时(C) A、R=F->NEXT;B、R=R->NEXT;C、F=F->NEXT;D、F=R->NEXT; 4、一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是(C) A、EDCBAB、DECBAC、DCEABD、ABCDE 5、带头结点的单链表HEAD为空的判定条件是(B) A、HEAD==NULL B、HEAD->NEXT==NULL C、HEAD->NEAT==HEAD D、HEAD! =NULL 6、在一个单链表中,已知Q所指结点是P所指结点的前驱结点,若在Q和P之间插入S结点,则执行(C) A、S->NEAT=P->NEXT;P->NEXT=S;B、P->NEXT=S->NEAT;S->NEAT=P; C、Q->NEXT=S;S->NEAT=P;D、P->NEXT=S;S->NEAT=Q; 7、在数据结构中,从逻辑上可以把数据结构分成(C) A、动态结构和静态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 8、任何一棵二叉数的叶结点在先序、中序和后序遍历序列中的相对次序(C) A、不发生改变 B、发生改变 C、不能确定 D、以上都不对 9、线性表的逻辑若采用链式存储结构时,要求内存中可用存储单元的地址(D) A、必须是连续 B、部分地址必须是连续的 C、一定是不连续的 D、连续不连续都可以 10、首先访问结点的左子树,然后访问根结点,再访问结点的右子树。 它属于(C)。 A、前序遍历B、后序遍历C、中序遍历D、层次遍历 11、在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是(D) A、希尔排序B、起泡排序C、插入排序D、选择排序 12、一棵非空的二叉树的先序序列和后序序列正好相同,则该二叉树一定满足()。 A、其中任意一结点均无左孩子B、其中任意一结点均无右孩子 C、其中只有一个结点 D、是任意一棵二叉树 13、索引无序文件是指() A、主文件无序,索引表有序 B、主文件有序,索引表无序 C、主文件有序,索引表有序 D、主文件无序,索引表无序 14、在一个单链表中,若删除P所指结点的后续结点,则执行() A、P->NEAT=P->NEXT->NEXT;B、P=P->NEXT;P->NEXT=P->NEXT->NEXT; C、P->NEXT=P->NEXT; D、P=P->NEXT->NEXT; 15、对二叉树从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用()遍历实现编号。 A、无序 B、中序 C、后序 D、从根开始的层次遍历 16、顺序查找法适合于存储结构为()的线性表。 A、散列存储B、顺序存储或链接存储C、压缩存储D、索引存储 17、线性表是具有n个()的有限序列(n≠0) A、表元素 B、字符 C、数据元素 D、数据项 18、栈的特点是(),队列的特点是先进先出。 A、先进先出 B、先进后出 C、先进 D、后出 19、设有两个串P和Q中首次出现的位置运算称作() A、连接 B、模式匹配 C、求字串 D、求串长 20、在一个图中,所有顶点的度数之和等于所有边数的()倍。 A、1/2 B、1 C、2 D、4 二、填空题(20分) 1.数据逻辑结构包括 、 和 三种类型,树形结构和图形结构合称为 2.向栈中压入元素的操作是 , 对栈进行退栈的操作是 。 3.已知P为单链表中的非首尾结点,在P结点后插入S结点的语句为 : 。 4.在双链表中,每个结点有两个指针域,一个指向 、 另一个指向 。 5.已知二叉树中叶子数为40,仅一个孩子的结点数为30,则总结点数____。 6.空串是 ,其长度等于 。 7.深度为7的二叉树至多有 结点。 8.已知一个图的邻接矩阵表示,计算第i个结点的入度的方法是 。 9.在一棵二叉树中,度为零的结点的个数为N0,度为2的结点的个数为N2,则有N0= 。 10.直接存取文件是用 。 11.在散列函数H(KEY)=KEY%P中,P应取 。 12.对N个元素的序列进行起泡排序时,最少的比较次数是 。 13.N个顶点的连通图至少 条边。 14.在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于 。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习