数据结构习题Word文档格式.docx
- 文档编号:21671065
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:28
- 大小:39.36KB
数据结构习题Word文档格式.docx
《数据结构习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构习题Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
栈
9.以下数据结构中,哪一个是线性结构AD
A.广义表
二叉树
稀疏矩阵
串
10.以下那一个术语与数据的存储结构无关B
A.栈
线索树
双向链表
11.数据结构S中:
元素的集合为:
A,关系的集合为:
<
A,B>
,<
A,C>
B,D>
B,E>
B,F>
C,G>
E,H>
E,I>
D,G>
,则S的逻辑结构为D
(A)集合
(B)线性
(C)树
(D)图
12.数据元素之间存在一对多关系的数据结构是C
(A)线性表
(B)队列
(C)二叉树
(D)AOV-网
13.以下数据结构中,属于线性结构的有A
(A)
线性表
(B)
树
(C)
二叉树
(D)
图
1.数据的物理结构包括数据元素的表示和关系的表示。
对于给定的n个元素,可以构造出的逻辑结构有
集合,线性结构树状,图状四种。
3.数据的逻辑结构是指数据元素之间的逻辑关系。
4.数据结构是指数据元素之间的逻辑关系,具体包含三个方面:
数据的逻辑结构,数据的物理存储结构和数据运算的集合。
5.根据数据元素之间关系的不同特性,通常有线性、树形、图状和集合四类基本逻辑结构,它们反映了四类基本的数据组织形式。
6.数据结构中评价算法的两个重要指标是空间和时间的复杂度
7.一个算法具有5个特性:
有穷性、确定性、可行性
,有零个或多个输入、有一个或多个输出。
第一章
1.数据结构是指【
指相互之间存在一种或多种特定关系的数据元素集合;
】,具体包含三个方面:
数据的【逻辑结构
】,数据的【物理结构
】和数据运算的集合。
2.根据数据元素之间关系的不同特性,通常有【集合结构
】、【线性结构
】、【
树状结构】、【
图状结构】四类基本逻辑结构,它们反映了四类基本的数据组织形式。
3.数据结构S中:
{A,B,C,D,E,F,G,H,I},关系的集合为:
{<
},则S的逻辑结构为(
D)
1.数据元素之间存在一对多关系的数据结构是(C
)
1.以下数据结构中,属于线性结构的有(
A
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]
data[i-1]=x;
last++
】;
}
1.}以下为顺序表的删除运算,分析算法,请在空白处填上正确的语句。
voiddelete_sqlist(sqlist*L,inti)
/*删除顺序表L中的第i-1个位置上的结点*/
{
if((i<
last))
error(“非法位置”);
for(j=i+1;
j=L->
j++)
【
data[j-1]=L->
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)个元素。
1.下面的定义是(
typedefstruct
node
int
data;
structnode
*next;
}linklist;
(A)顺序表
(B)单链表
(C)双向链表
(D)二叉链表
data[Maxsize];
last;
}seqlist;
(C)静态链表
(D)循环队列
1.单链表的一个存储结点包含(
A)。
(A)数据域或指针域 (B)指针域或链域 (C)指针域和链域 (D)数据域和链域
1.单链表中,增加头结点的目的是为了(
C
(A)使单链表至少有一个结点
(B)标示表结点中首结点的位置
(C)方便运算的实现
(D)说明单链表是线性表的链式存储实现
1.对于单链表表示法,以下说法错误的是(
(A)指向链表的第一个结点的指针,称为头指针
(B)单链表的每一个结点都被一个指针所指
(C)终端结点的指针域就为NULL
(D)尾指针变量具标识单链表的作用,故常用尾指针变量来命名单链表
1.有一个含头结点的单链表,头指针为head,则判断其是否为空的条件是(
(A)head==NULL
(B)head->
next==NULL
(C)head->
next==head
head!
=NULL
1.在带头结点的非空单链表H中,指针p指向某的结点,求p结点的前驱结点指针q的算法是(B
(A)q=H;
while(q!
=p)q=q->
next;
(B)q=H;
while(q->
next!
(C)q=H->
next;
(D)q=H->
1.在带头结点的单链表H中,求单链表长度len的算法是(A
(A)len=0,p=H;
while(p->
=NULL){len++;
p=p->
(B)len=0,p=H->
}
(C)len=1,p=H;
while(p!
=NULL){p=p->
len++;
}
(D)len=1,p=H->
1.假设指针p指向单链表中的某一结点,s为某结点指针,则在p指针后面插入结点s的操作是(
C)。
(A)p->
next=s;
s=p->
(B)p->
s->
next=p->
(C)s->
p->
(D)s->
next=p;
1.假设指针p指向单链表中的某一结点,s为某结点指针,则在p指针前面插入结点s的操作是(
无正确答案)。
(A)s->
(C)p->
next=s;
s=p->
next=p;
p->
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.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为(
(B)用头指针表示的单循环链表
(C)用尾指针表示的单循环链表
(D)单链表
1.在单链表中,头结点是必不可少的。
(
错
)
2.在单链表中,头结点的作用是简化运算。
对)
3.在线性表的顺序存储结构中,逻辑上相邻的数据元素在物理位置上也是相邻的。
对
4.在线性表的链式存储结构中,逻辑上相邻的数据元素在物理位置上也是相邻的。
5.只要内存足够大,采用链式存储结构的线性表长度不受限制。
第三章
1.仅允许在表的一端进行插入与删除操作的线性表称作【
栈】,允许在表的一端进行插入,另一端进行删除操作的线性表称作【队列
2.栈称为【后进先出
】线性表。
队称为【
先进先出】线性表。
3.队列的操作是按【先进先出
】的原则进行的。
4.栈的运算特点是【
后进先出】。
请将用C语言的顺序栈的定义补充完整:
typedefstruct
ElementTypedata[Maxsize]】;
inttop】;
}seqstack;
1.以下运算实现在顺序栈上的进栈,请在空白处用适当的语句予以填充。
{
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,采用少用一个空间的方法处理,判断队列满的条件是【
4.以下顺序栈定义及出栈运算实现,请在空白处用适当语句填充。
intPop(SeqStack
*sp,DataType*x)
{if(sp->
top==0)
{error(“空栈”);
return(0);
else{*x=_sp->
top]______________;
__sp->
top--_____________;
return
(1);
}
1.栈操作的原则是(
(A)先进先出
(B)后进先出
(C)栈顶插入
(D)栈顶删除
1.栈的两种常用存储结构分别为A
(A)顺序存储结构和链式存储结构
(B)顺序存储结构和散列存储结构
(C)链式存储结构和索引存储结构
(D)链式存储结构和散列存储结构
1.有一栈,元素A,B,C,D依次进栈,则以下出栈序列中不可能得到的是(
D)。
D、C、B、A
C、B、A、D
A、B、C、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)顺序存储结构(B)链式存储结构(C)索引存储结构(D)散列存储结构
1.设循环队列中数组的下标范围是1~n,其头尾指针分别是f、r,则队列中元素个数为(
(A)r-f (B)r–f+1
(C)(r–f+1)modn (D)(r–f+n)modn
1.在循环队列中(少用一个存储空间),队满的条件是(
(A)(rear+1)%maxsize==front
(B)raer==front
(C)(front+1)%maxsize==rear
(D)rear==0
1.循环队列的队满条件为(
)。
(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.串是(
(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是______B________。
(A)i(i-1)/2+j-1
(B)i(i-1)/2+j
(C)i(i+1)/2+j-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题