数据结构习题.docx

上传人:b****8 文档编号:29999566 上传时间:2023-08-04 格式:DOCX 页数:35 大小:36.57KB
下载 相关 举报
数据结构习题.docx_第1页
第1页 / 共35页
数据结构习题.docx_第2页
第2页 / 共35页
数据结构习题.docx_第3页
第3页 / 共35页
数据结构习题.docx_第4页
第4页 / 共35页
数据结构习题.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

数据结构习题.docx

《数据结构习题.docx》由会员分享,可在线阅读,更多相关《数据结构习题.docx(35页珍藏版)》请在冰豆网上搜索。

数据结构习题.docx

数据结构习题

 数据结构习题

1.算法的计算量的大小称为计算的B。

A.效率  B. 复杂性       C. 现实性           D. 难度

2. 算法的时间复杂度取决于C

A.问题的规模    B.待处理数据的初态    C.A和B

3.计算机算法指的是C,它必须具备B这三个特性。

(1)A.计算方法B.排序方法  C. 解决问题的步骤序列    D. 调度方法

(2)A可执行性、可移植性、可扩充性B.可执行性、确定性、有穷性

C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性      

4.一个算法应该是C

 A.程序B.问题求解步骤的描述  C要满足五个基本特性 D.A和C.

5. 下面关于算法说法错误的是D

A.算法最终必须由计算机程序实现

B.为解决某问题的算法同为该问题编写的程序含义是相同的

C.算法的可行性是指指令不能有二义性          

D.以上几个都是错误的

6. 下面说法错误的是B

  

(1)算法原地工作的含义是指不需要任何额外的辅助空间

   

(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法

   (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界

   (4)同一个算法,实现语言的级别越高,执行效率就越低

 A.

(1)  B.

(1),

(2) C.

(1),(4)D.(3)

7.从逻辑上可以把数据结构分为c两大类

A.动态结构、静态结构       B.顺序结构、链式结构 

C.线性结构、非线性结构     D.初等结构、构造型结构

8.以下与数据的存储结构无关的术语是C

A.循环队列   B.链表        C. 哈希表          D.  栈

9.以下数据结构中,哪一个是线性结构AD

A.广义表  B. 二叉树      C. 稀疏矩阵         D.  串

10.以下那一个术语与数据的存储结构无关B

A.栈  B. 哈希表      C. 线索树           D.  双向链表

11.数据结构S中:

元素的集合为:

A,关系的集合为:

,则S的逻辑结构为D

 (A)集合          (B)线性          (C)树              (D)图

12.数据元素之间存在一对多关系的数据结构是C

(A)线性表         (B)队列          (C)二叉树           (D)AOV-网

13.以下数据结构中,属于线性结构的有A

(A)  线性表  (B) 树      (C) 二叉树       (D)  图

 

1.数据的物理结构包括数据元素的表示和关系的表示。

2. 对于给定的n个元素,可以构造出的逻辑结构有 集合,线性结构树状,图状四种。

3.数据的逻辑结构是指数据元素之间的逻辑关系。

4.数据结构是指数据元素之间的逻辑关系,具体包含三个方面:

数据的逻辑结构,数据的物理存储结构和数据运算的集合。

5.根据数据元素之间关系的不同特性,通常有线性、树形、图状和集合四类基本逻辑结构,它们反映了四类基本的数据组织形式。

6.数据结构中评价算法的两个重要指标是空间和时间的复杂度 

7.一个算法具有5个特性:

有穷性、确定性、可行性 ,有零个或多个输入、有一个或多个输出。

 

第一章

1.数据结构是指【 指相互之间存在一种或多种特定关系的数据元素集合;】,具体包含三个方面:

数据的【逻辑结构 】,数据的【物理结构 】和数据运算的集合。

2.根据数据元素之间关系的不同特性,通常有【集合结构 】、【线性结构 】、【 树状结构】、【 图状结构】四类基本逻辑结构,它们反映了四类基本的数据组织形式。

3.数据结构S中:

元素的集合为:

{A,B,C,D,E,F,G,H,I},关系的集合为:

{},则S的逻辑结构为(  D)

 (A)集合          (B)线性          (C)树              (D)图

1.数据元素之间存在一对多关系的数据结构是(C  )

(A)线性表         (B)队列          (C)二叉树           (D)AOV-网

1.以下数据结构中,属于线性结构的有( A )

(A)  线性表  (B) 树      (C) 二叉树       (D)  图

1.存储结构是逻辑结构在计算机中的实现。

(对 )

2.非空线性表中任意一个数据元素都有且仅有一个直接前驱元素。

( 错)

3.非空线性表中任意一个数据元素都有且仅有一个直接后继元素。

 ( 错)

4.顺序存储结构只能用来存放线性结构;链式存储结构只能存放非线性结构。

(错 )

5.算法就是程序。

( 错)

6.一种逻辑结构可以采用不同的存储方式存放在计算机中。

( 对)

第二章

1.线性结构的基本特征是:

若至少含有一个结点,则除起始结点没有直接【 前驱】外,其他结点有且仅有一个直接【前驱 】;除终端结点没有直接【 后继】外,其它结点有且仅有一个直接【后继 】。

2.线性表的顺序存储结构是指用一组【 地址连续】的存储单元依次存储线性表中的各个元素,逻辑上相邻的元素,其物理位置【连续 】_。

链式存储结构中,逻辑上相邻的元素,其物理位置【 不一定连续】。

3.线性表的顺序存储结构中,逻辑上相邻的元素,其物理位置【 连续】。

链式存储结构中,逻辑上相邻的元素,其物理位置【 不一定连续】。

4.在顺序表中插入或删除一个元素,需要平均移动【 表长一半】元素,具体移动的元素个数与【 插入或删除的位置】有关。

5.单链表是线性表的的【链式 】存储结构。

6.单链表表示法的基本思想是用【 指针域】表示结点间的逻辑关系。

7.循环链表与单链表的区别仅仅在于循环链表尾结点的链域值不是【 NULL】,而是一个指向【 表头指针】的指针。

8.如右图所示,在单键表中,P指针所指结点之后插入一个新结点S,操作的语句是:

【 s->next=p-.>next】;【p->next=s 】。

9.顺序表的类型中,假定每个datatype类型的变量占用k(k>=1)个内存单元,其中,b是顺序表的第一个存储结点的第一个单元的内存地址,那么,第i个(1≤i≤n)结点ai的存储地址为【 b+(i-1)*k】。

10.在单链表中,删除P指针所指向的结点的后继(S指针指向的结点)的操作是【p->next=s->next 】;free(【 s】)。

11.以下为顺序表的插入运算,分析算法,请在空白处填上正确的语句。

voidinsert_seqlist(seqlist*L,datatypex,inti)

 /*将x插入到顺序表L的位序为i的位置*/

{if(L->last==maxsize-1)error(“表满”);

if((i<1)||(i>L->last+2))error(“非法位置”);

for(j=L->last;j>=i-1;j--)【L->data[j+1]=L->data[j] 】;

L->data[i-1]=x;

【L->last++ 】;

}

1.}以下为顺序表的删除运算,分析算法,请在空白处填上正确的语句。

 voiddelete_sqlist(sqlist*L,inti) 

/*删除顺序表L中的第i-1个位置上的结点*/

{   if((i<1)||(i>L->last))

error(“非法位置”);

    for(j=i+1;j=L->last;j++)

【 L->data[j-1]=L->data[j] 】;

     L->last=L->last-1;

}

1.下列有关线性表的叙述中,正确的是( D )。

(A)一个线性表是n个数据元素的有限序列       (B)线性表中任何一个元素有且仅有一个直接前驱

(C)线性表中任何一个元素有且仅有一个直接后继  (D)以上说法都不正确

1.顺序表是线性表的( B )。

                                           

(A)链式存储结构   (B) 顺序存储结构   (C) 索引存储结构    (D)散列存储结构

1.从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动(  A)个元素。

(A)n-i                   (B)n-i+1                   (C)n-i-1               (D)i

1.一个长度为n的顺序表中第i个位置上插入新元素(1≤i≤n+1)时,需向后移动(  B)个元素。

(A)n-i                   (B)n-i+1                   (C)n-i-1               (D)i

1.下面的定义是( B )。

      typedefstruct  node

{     int data;

      structnode *next;  

}linklist;

 (A)顺序表     (B)单链表   (C)双向链表         (D)二叉链表

1.下面的定义是( A )。

      typedefstruct 

{     int data[Maxsize];

      int last;  

}seqlist;

 (A)顺序表     (B)单链表   (C)静态链表         (D)循环队列

1.单链表的一个存储结点包含(  A)。

(A)数据域或指针域 (B)指针域或链域 (C)指针域和链域  (D)数据域和链域

1.单链表中,增加头结点的目的是为了( C )。

(A)使单链表至少有一个结点   (B)标示表结点中首结点的位置

(C)方便运算的实现          (D)说明单链表是线性表的链式存储实现

1.对于单链表表示法,以下说法错误的是( D )。

(A)指向链表的第一个结点的指针,称为头指针 

(B)单链表的每一个结点都被一个指针所指

(C)终端结点的指针域就为NULL

(D)尾指针变量具标识单链表的作用,故常用尾指针变量来命名单链表

1.有一个含头结点的单链表,头指针为head,则判断其是否为空的条件是( B )。

(A)head==NULL   (B)head->next==NULL    (C)head->next==head      (D) head!

=NULL

1.在带头结点的非空单链表H中,指针p指向某的结点,求p结点的前驱结点指针q的算法是(B )。

(A)q=H;while(q!

=p)q=q->next;          (B)q=H;while(q->next!

=p)q=q->next;

(C)q=H->next;while(q!

=p)q=q->next;   (D)q=H->next;while(q->next!

=p)q=q->next;

1.在带头结点的单链表H中,求单链表长度len的算法是(A )。

(A)len=0,p=H;while(p->next!

=NULL){len++;p=p->next;}

(B)len=0,p=H->next;while(p->next!

=NULL){len++;p=p->next;}

(C)len=1,p=H;while(p!

=NULL){p=p->next;len++;}

(D)len=1,p=H->next;while(p->next!

=NULL){p=p->next;len++;}

1.假设指针p指向单链表中的某一结点,s为某结点指针,则在p指针后面插入结点s的操作是(  C)。

(A)p->next=s;s=p->next;     (B)p->next=s;s->next=p->next;

(C)s->next=p->next;p->next=s;(D)s->next=p;p->next=s;

1.假设指针p指向单链表中的某一结点,s为某结点指针,则在p指针前面插入结点s的操作是(  无正确答案)。

(A)s->next=p->next;p->next=s;  (B)p->next=s;s->next=p->next;

(C)p->next=s;s=p->next;     (D)s->next=p;p->next=s;

1.在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是(  B)。

(A)p=p->next;   (B)p->next=p->next->next;    (C)p->next=p;  (D)p=p->next->next;

1.某线性表中最常用的操作是存取序号为i的元素及其前驱的值,可采用的存储的方式是(  A)。

(A)顺序表             (B)单向链表               (C)双向循环链表     (D)单向循环链表

1.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为(  C)。

(A)顺序表   (B)用头指针表示的单循环链表   (C)用尾指针表示的单循环链表    (D)单链表

1.在单链表中,头结点是必不可少的。

(  错 ) 

2.在单链表中,头结点的作用是简化运算。

(   对) 

3.在线性表的顺序存储结构中,逻辑上相邻的数据元素在物理位置上也是相邻的。

(  对 ) 

4.在线性表的链式存储结构中,逻辑上相邻的数据元素在物理位置上也是相邻的。

(  错 ) 

5.只要内存足够大,采用链式存储结构的线性表长度不受限制。

(  对 )

第三章

1.仅允许在表的一端进行插入与删除操作的线性表称作【 栈】,允许在表的一端进行插入,另一端进行删除操作的线性表称作【队列 】。

2.栈称为【后进先出 】线性表。

队称为【 先进先出】线性表。

3.队列的操作是按【先进先出 】的原则进行的。

4.栈的运算特点是【 后进先出】。

请将用C语言的顺序栈的定义补充完整:

typedefstruct

{  【 ElementTypedata[Maxsize]】;

   【 inttop】;

}seqstack;

1.以下运算实现在顺序栈上的进栈,请在空白处用适当的语句予以填充。

typedefstruct

{

  DataTypedata[maxsize];

  inttop;

}SeqStack;

intPush(SeqStack *sq,DataTypex)

  { if(sp->top==maxsize-1)  { error(“栈满”);return(0);}

     else{【sp->top++ 】;

          【 sp->data[sp->top]】=x;

return

(1);

}

}

1.队列的操作是按【先进先出 】原则进行的。

循环队列Q分配Maxsize个存储单元,队头指针为front,队尾指针为rear,采用少用一个空间的方法处理,判断队列满的条件是【 front=(rear+1)%Maxsize】。

2.循环队列是队列的【 顺序】存储结构。

3.循环队列Q分配Maxsize个存储单元,队头指针为front,队尾指针为rear,采用少用一个空间的方法处理,判断队列满的条件是【  front=(rear+1)%Maxsize】。

4.以下顺序栈定义及出栈运算实现,请在空白处用适当语句填充。

typedefstruct

{

  DataTypedata[maxsize];

  inttop;

}SeqStack;

intPop(SeqStack *sp,DataType*x)

  {if(sp->top==0)

{error(“空栈”);return(0);}

   else{*x=_sp->data[sp->top]______________;

           __sp->top--_____________;

           return

(1); }

   }

1.栈操作的原则是( B )。

(A)先进先出          (B)后进先出         (C)栈顶插入     (D)栈顶删除

1.栈的两种常用存储结构分别为A

(A)顺序存储结构和链式存储结构  (B)顺序存储结构和散列存储结构

(C)链式存储结构和索引存储结构  (D)链式存储结构和散列存储结构

1.有一栈,元素A,B,C,D依次进栈,则以下出栈序列中不可能得到的是(  D)。

(A) D、C、B、A    (B) C、B、A、D   (C) A、B、C、D    (D) D、C、A、B

13.一个栈的入栈序列是A,B,C,D,E,则不可能的出栈序列是(  C)。

(A)EDCBA               (B)DECBA                  (C)DCEAB                (D)ABCDE  

1.若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的不同排列个数为B

(A)4         (B)5         (C)6        (D)7

1.循环队列是队列的( A )。

 (A)顺序存储结构(B)链式存储结构(C)索引存储结构(D)散列存储结构     

1.设循环队列中数组的下标范围是1~n,其头尾指针分别是f、r,则队列中元素个数为( D )。

 (A)r-f  (B)r–f+1    (C)(r–f+1)modn  (D)(r–f+n)modn

1.在循环队列中(少用一个存储空间),队满的条件是(  A)。

(A)(rear+1)%maxsize==front             (B)raer==front

(C)(front+1)%maxsize==rear             (D)rear==0 

1.循环队列的队满条件为( C )。

(A)(sq.rear+1)%mazsize==(sq.front+1)%maxsize;

(B)(sq.rear+1)%maxsize==sq.front+1

(C)sq.(rear+1)%maxsize==sq.front

(D)sq.rear==sq.front

1.设数组data[m]作为循环队列SQ的存储空间,front为头指针,rear为尾指针,执行出队操作,其头指针的值为(  D)。

 

(A)front=front+1 (B)front=(front+1)%(m-1)  (C)front=(front-1)%m  (D)front=(front+1)%m

1.栈和队列与线性表的逻辑结构相同。

( 对  ) 

2.栈只能在栈顶进行插入和删除。

(  对 ) 

3.队列只能在队首进行删除,在队尾进行插入。

(  对 ) 

4.队列只能在队尾进行删除,在队首进行插入。

( 错  ) 

第四章

1.通常采用【顺序 】存储结构来存放数组。

对二维数组可有两种存储方法:

一种是以【 行】为主序的存储方式,另一种是以【 列】为主序的存储方式。

2.已知具有n个元素的一维数组采用顺序存储结构,每个元素占k个存储单元,第一个元素的地址为LOC(a1),那么,LOC(ai)=【loc(a1)+(i+1)*k 】。

3.在C语言中定义的二维数组intM[10][20],每个元素(整数)占两个存储单元,数组的起始地址为2000,M[8][19]的存储值为【 2358】。

元素M[5][10]的存储位置为【 2220】。

4.假设有6行8列的二维数组A,每个元素占用6个字节,存储器按字节编址。

已知A的基地址为1000,那么元素A[3,6]在按行存储时的地址是【 1126】,按列存储时的地址是【 1192】。

5.对称方阵采用压缩存储,即为每一对对称位置元素只分配一个存储空间,则可将n2个元素压缩存储到【 n*(n+1)/2】个元素的存储空间中。

6.有一个10阶对称矩阵A[10][10],采用压缩存储方式以行序为主存储,A[0][0]的位置是1,则A[8][5]的位置是【 42】。

7.三元组表是【稀疏矩阵 】的【 顺序】存储结构。

8.字符串S=“Computer”中,以p为首字符的子串有【 5】个。

9.TAIL[HEAD[((a,b),(c,d))]]运算的结果是【 (b)】。

10.广义表L=((x,a),(x,a,(b,c)),y)的长度是【 3】。

11.设广义表A=(a,b),B=(c,d),求head((A,B))的值为【 (a,b)】。

12.有如下稀疏矩阵,请写出它的三元组表:

m=6n=6t=9

13.串是( D )。

(A)一些符号构成的序列 (B)有限个字母构成的序列

(C)一个以上的字符构成的序列 (D)有限个字符构成的序列

1.已知函数Sub(s,i,j)的功能是返回串s中从第i个字符起长度为j的子串,函数Scopy(s,t)的功能为复制串t到s。

若字符串S=“SCIENCESTUDY”,则调用函数Scopy(P,Sub(S,1,7)后得到(A  )。

(A)P=“SCIENCE”  (B)P=“STUDY” (C)S=“SCIENCE” (D)S=“STUDY”

1.设有一个二维数组A[6][8],假设A[0][0]存放位置在1000,每个元素占6个空间,按行优先存储,则A[3][6]的存储位置是__B_

(A)1180    (B)1126     (C)126       (D)180

1.一个向量第一个元素的存储地址是100,每个元素的长度为2,则第五个元素的地址是_______B_______。

(A)110              (B)108                    (C)100                (D)120

1.为了节省存储空间,将n阶对称矩阵A(下标从1开始)中包括主对角线元素在内的下三角部分的所有元素按照行序为主序方式存放在一维数组B[1:

n(n+1)/2]中,对任意下三角部分的元素aij(i≥j)在数组B的下标k是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1