第一章 单元测试
1、单选题:
图书馆的数目检索系统采用
关系的数据结构。
A:集合
B:线性
C:树形
D:图状
正确答案:【线性】
2、单选题:
是相互之间存在一种或多种特定关系的数据元素的集合。
A:数据
B:数据元素
C:数据项
D:数据结构
正确答案:【数据结构】
3、单选题:
( )是一个值的集合和定义在这个值集上的一组操作的总称。
A:数据类型
B:数据元素
C:数据项
D:数据结构
正确答案:【数据类型】
4、单选题:算法的确定性是指 ( )
A:当输入数据非法时,算法也能作出反应或进行处理
B:在任何情况下,算法不会出现死循环
C:算法中的每一条指令必须有确切的含义
D:算法中没有逻辑错误
正确答案:【算法中的每一条指令必须有确切的含义 】
第二章 单元测试
1、单选题:
线性表中的数据元素有一个前驱多个后继。
A:对
B:错
正确答案:【错】
2、单选题:
用顺序结构存储,删除最后一个结点时,( )
A:会移动其它结点位置
B:一定不会移动其它结点位置
C:可能会移动其它结点位置
D:其它
正确答案:【一定不会移动其它结点位置】
3、单选题:
链表中逻辑上相邻的元素的物理地址__________相邻。
A:必定
B:不一定
C:一定不
D:其它
正确答案:【不一定 】
4、单选题:
1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。 //将合并逆置后的结果放在C表中,并删除B表 StatusListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C) { LinkList pa,pb,qa,qb; pa=A; pb=B; qa=pa; //保存pa的前驱指针 qb=pb; //保存pb的前驱指针 pa=pa->next; pb=pb->next; A->next=NULL; C=A; while(pa&&pb){ if(pa->data<pb->data){ qa=pa; pa=pa->next; qa->next=A->next; //将当前最小结点插入A表表头 A->next=qa; } else{ qb=pb; pb=pb->next; ( )//将当前最小结点插入B表表头 A->next=qb; } } while(pa){ qa=pa; pa=pa->next; qa->next=A->next; A->next=qa; } while(pb){ qb=pb; pb=pb->next; qb->next=A->next; A->next=qb; } pb=B; free(pb); return OK; }
A:qa->next=A->next
B:qb->next=A->next
C:qa->next=A;
D:qb->next=A;
正确答案:【qb->next=A->next】
5、单选题:
假设某个单向循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表中某个结点的指针,试编写算法在链表中删除指针s所指结点的前驱结点。
StatusListDelete_CL(LinkList &S)
{ LinkList p,q; if(S==S->next)return ERROR; q=S; p=S->next; while(
){ q=p; p=p->next; } q->next=p->next; free(p); return OK; }
A:p->next!=S
B:p->next==S
C:p!=S
D:p==S
正确答案:【p->next!=S】
第三章 单元测试
1、单选题:
若以S和X分别表示进栈和退栈操作,则对初始状态为空的栈可以进行的栈操作系列合法的是( );
A:SXSSXXXX
B: SXXSXSSX
C:SXSXXSSX
D: SSSXXSXX
正确答案:【 SSSXXSXX】
2、单选题:
设计一个迷宫求解的算法,采用___________数据结构最佳。
A:线性表的顺序存储结构
B:栈
C:队列
D:线性表的链式存储结构
正确答案:【栈 】
3、单选题:
循环队列存储在数组A[0..m-1],则出队时的操作为( )
A:front=front+1
B:front=(front+1)mod (m-1)
C:front=(front+1)mod m
D:front=(front mod m)+1
正确答案:【front=(front+1)mod m 】
4、单选题:
1.试写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如‘序列
1&序列
2’模式的字符序列。其中序列
1和序列
2中都不含字符‘&’,且序列
2是序列
1的逆序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。 BOOLSymmetry(char a[]) { int i=0; Stack s; InitStack(s); ElemType x; while(a[i]!=’&’ && a[i]){ _________ i++; } if(!a[i]) return FALSE; i++; while(a[i]){ Pop(s,x); if(x!=a[i]){ DestroyStack(s); return FALSE; } i++; } return TRUE;
}
A:Pop(s,a[i++])
B:Push(s,a[i++])
C:Push(s,a[i])
D:Pop(s,a[i])
正确答案:【Push(s,a[i])】
5、单选题:
Status SymmetryString(char* p){ Queue q; if(!InitQueue(q)) return 0; Stack s; InitStack(s); ElemType e1,e2; while(*p){ Push(s,*p); EnQueue(q,*p); p++; } while(!StackEmpty(s)){ ( ) DeQueue(q,e2); if(e1!=e2) return FALSE; } return OK;}
A:Pop(s,e1);
B:Push(s,*p);
C:EnQueue(q,*p)
D:P–P–P–P–P–P–P–P–
正确答案:【Pop(s,e1);】
第四章 单元测试
1、单选题:
设s=’I AM A STUDENT’ , t=’GOOD’ ,则Concat(Substring(s,6,2),Concat(t,SubString(s,7,8)))=( )
A: A GOODWORKER
B:ST GOODSTUDENT
C: A GOOD STUDENT
D:A GOOD WORKER
正确答案:【 A GOOD STUDENT 】
2、单选题:空串与空格串是相同的,这种说法____。
A:正确
B:不正确
正确答案:【不正确】
3、单选题:
设串sl=″Data Structures with Java″,s2=“it″,则子串定位函数index(s1,s2)的值为() ;
A:15
B:16
C:17
D:18
正确答案:【18】
4、单选题:串的长度是指( )
A:串中所含不同字母的个数
B:串中所含字符的个数
C:串中所含不同字符的个数
D:串中所含非空格字符的个数
正确答案:【串中所含字符的个数】
5、判断题:串是一种数据对象和操作都特殊的线性表。
A:对
B:错
正确答案:【对】
第五章 单元测试
1、单选题:数组A中,每个元素A的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放在存储器内,存放该数组至少需要的单元数是______。
A:80
B:100
C:240
D:270
正确答案:【240】
2、单选题:假设有二维数组A6×8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置为1000,计算数组A按行存储时元素A[14]第一个字节的位置( ) ;
A:1018
B:1024
C:1030
D:1072
正确答案:【1072】
3、单选题:
若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点( )。
A:正确
B:错误
正确答案:【错误】
4、单选题:
广义表((()),a,((b,c),(),d),(((e))))的长度为( ) ;
A:3
B:4
C:5
D:2
正确答案:【4】
5、单选题:下面说法不正确的是 ( )。
A: 广义表的表头总是一个广义表
B:广义表的表尾总是一个广义表
C:广义表难以用顺序存储结构
D:广义表可以是一个多层次的结构
正确答案:【 广义表的表头总是一个广义表】
6、单选题:
1.试按教科书5.5节图5.10所示的结点结构编写复制广义表的递归算法。 // 由广义表L复制广义表T
intCopyGList(GList& T,GList& L)
{ if(!L) T=NULL; else{
T=newGLNode; if(!T)exit(OVERFLOW);
T->tag=L->tag;
if(L->tag==ATOM)T->atom=L->atom;
else{ ________ CopyGList(T->tp,L->tp); } } return OK; }
A:A.CopyGList(T,L)
B:CopyGList(L->tp,T->tp);
C:CopyGList(L->hp,T->hp)
D:CopyGList(T->hp,L->hp);
正确答案:【CopyGList(T->hp,L->hp);】
第六章 单元测试
1、单选题:已知一棵树边的集合为{<I,M>, <I,N>, <E,I>, <B,E>, <B,D>, <A,B>, <G,J>, <G,K>, <C,G>, <C,F>, <H,L>, <C,H>, <A,C>},问这棵树中结点G的双亲结点为( )
A:A
B:C
C:I
D:B
正确答案:【C】
2、单选题:
一棵二叉树中,叶子的个数为10,则其度为2的结点的个数为 ( ) ;
A:9
B:10
C:11
D:12
正确答案:【9】
3、单选题:
假如一棵二叉树的中序遍历结果为ABCD,则结点A和结点D的关系一定不是( );
A:结点A是结点D的双亲结点
B:结点A是结点D的右子树上的结点
C:结点A是结点D的左子树上的结点
D:结点A与结点D具有共同的双亲的右子树上的结点
正确答案:【结点A是结点D的右子树上的结点 】
4、单选题:
已知一棵树边的集合为{<I,M>, <I,N>, <E,I>, <B,E>, <B,D>, <A,B>, <G,J>, <G,K>, <C,G>, <C,F>, <H,L>, <C,H>, <A,C>},将此树转化为二叉树后,E的左孩子为( );
A:A
B:C
C:I
D:B
正确答案:【I】
5、单选题:一棵哈夫曼树有17个结点,则其叶子结点的个数是 _________ 。
A:7
B:8
C:9
D:10
正确答案:【9】
6、单选题:
写递归算法,将二叉树中所有结点的左、右子树相互交换。 Status ExchangeBiTree(BiTree& T) { BiTreep; if(T){ p=T->lchild; T->lchild=T->rchild; T->rchild=p; ExchangeBiTree(T->lchild); __________ } returnOK; }
A:A.ExchangeBiTree(p);
B:ExchangeBiTree(T->rchild);
C:ExchangeBiTree(T->lchild->rchild)
D:ExchangeBiTree(T);
正确答案:【ExchangeBiTree(T->rchild);】
7、单选题:
试写一个算法,为一棵二叉树建立后序线索二叉树。
StatusPostOrderThreading(BiThrTree& T,BiThrTree& pre);//首先建立后序线索树StatusFindNextInBiThrTree(BiThrTree& q,TElemType *p);//再进行查找
// 后序线索二叉树的算法
StatusPostOrderThreading(BiThrTree& Thrt,BiThrTree& T)
{ BiThrTree pre; Thrt=new BiThrNode; // 为线索二叉树建立头结点 if(!Thrt) exit(OVERFLOW); Thrt->LTag=Link; Thrt->RTag=Thread; Thrt->rchild=Thrt;// 右子树回指 if(!T) Thrt->lchild=Thrt;// 若二叉树空,左子树回指 else{ Thrt->lchild=T; pre=Thrt;
PostThreading(T,pre);// 后序遍历进行后序线索化 pre->rchild=Thrt;//最后一个结点线索化
pre->RTag=Thread; Thrt->rchild=pre; } return OK; }
StatusPostThreading(BiThrTree& T,BiThrTree& pre)
{ if(T){
if(T->LTag==Link)PostThreading(T->lchild,pre); if(T->RTag==Link)PostThreading(T->rchild,pre);
if(!T->lchild){ T->LTag=Thread; ___________ }
if(pre &&!pre->rchild){
pre->RTag=Thread; pre->rchild=T; } pre=T; } return OK; }
A:T->lchild=pre;
B:pre->lchild=T
C:T->rchild=pre
D:pre->rchild=T
正确答案:【T->lchild=pre; 】
如有任何疑问请及时联系QQ 50895809反馈