第一章 单元测试

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反馈
如遇卡顿看不了剩余内容请换个浏览器即可打开

没找到的科目也可以提醒我们更新

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注