数据结构本形考作业答案.docx
《数据结构本形考作业答案.docx》由会员分享,可在线阅读,更多相关《数据结构本形考作业答案.docx(58页珍藏版)》请在冰点文库上搜索。
数据结构本形考作业答案
形考作业一
题目1
把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为()。
选择一项:
A.逻辑结构
B.给相关变量分配存储单元
C.算法的具体实现
D.物理结构
题目2
下列说法中,不正确的是()。
选择一项:
A.数据可有若干个数据元素构成
B.数据元素是数据的基本单位
诃C.数据项是数据中不可分割的最小可标识单位
产_D.数据项可由若干个数据元素构成
题目3
一个存储结点存储一个()。
选择一项:
A.数据结构
B.数据类型
C.数据项
i_D.数据元素
题目4
数据结构中,与所使用的计算机无关的是数据的()。
选择一项:
题目5
下列的叙述中,不属于算法特性的是(选择一项:
A.有穷性
B.可行性
)°
*C.可读性
D.输入性
题目6
正确
获得2.00分中的2.00分
◎A.研究算法中的输入和输出的关系
B.分析算法的易懂性和文档性
I圏C.分析算法的效率以求改进
D.找出数据结构的合理性
题目7
算法指的是()。
选择一项:
A.排序方法
B.解决问题的计算方法
C.计算机程序
*D.解决问题的有限运算序列
题目8
)有关。
算法的时间复杂度与(
选择一项:
A.所使用的计算机
因B.数据结构
C.算法本身
D.计算机的操作系统
题目9
设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第
i个元
素),插入一个元素,则移动元素个数为(
)。
选择一项:
A.n-i+1
3B.n-i-1
rj
C.n-i
D.i
题目10
设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为()。
选择一项:
-A.n-i
B.n-i-1因C.n-i+1
D.i
题目11
在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接
后继,现要删除q所指结点,可用语句()。
选择一项:
p->next=q->next
B.p=q_>next
C.q->next=NULL
D.p_>next=q
题目12
)。
在一个单链表中p所指结点之后插入一个s所指的结点时,可执行(选择一项:
A.p=s->next
B.p->next=s;s->next=p->next
C.p->next=s->next;
D.s->next=p->next;p->next=s;
r
题目13
非空的单向循环链表的尾结点满足(选择一项:
A.p==head
B.p==NULL
)(设头指针为head,指针p指向尾结点)。
C.p->next==head
D.p->next==NULL
题目14
链表不具有的特点是()。
选择一项:
A.可随机访问任一元素
B.插入删除不需要移动元素
C.不必事先估计存储空间
D.所需空间与线性表长度成正比
题目15
带头结点的链表为空的判断条件是(选择一项:
)(设头指针为head)。
3
A.head-〉next==NULL
仁
B.head->next==head
r
C.head==NULL
D.head!
=NULL
题目16
在一个长度为n的顺序表中为了删除第5个元素,由第6个元素开始从后到前依次移动了
15个元素。
则原顺序表的长度为()。
选择一项:
A.21
。
B.19
*C.20
D.25
题目17
有关线性表的正确说法是()。
选择一项:
A.表中的元素必须按由小到大或由大到下排序
B.除了一个和最后一个元素外,其余元素都有一个且仅有一个直接前驱和一个直接后
继
C.线性表至少要求一个元素
D.每个元素都有一个直接前驱和一个直接后继
题目18
向一个有127个元素的顺序表中插入一个新元素,并保持原来的顺序不变,平均要移动()个元素。
选择一项:
A.8
B.7
C.63
D.63.5
题目19
一个顺序表第一个元素的存储地址是90,每个元素的长度为2,则第6个元素的地址是
()。
选择一项:
A.102
B.98
-
C.100
D.106
题目20
在双向循环链表中,在p所指的结点之后插入指针f所指的新结点,其操作步骤是
()°
选择一项:
A.f->prior=p;f->next=p->next;p_>next=f;p->next_>prior=f;
B.p_>next=f;f->prior=p;p->next->prior=f;f->next=p->next;
C.f->prior=p;f->next=p->next;p_>next->prior=f;p_>next=f;
D.p_>next=f;p_>next->prior=f;f->prior=p;f->next=p->next;
二、填空题(每小题2分,共30分)
题目21
在一个长度为n的顺序存储结构的线性表中,向第i(l£妬+1)个元素之前插入新元素时,
n-i+1
需向后移动回答个数据元素。
题目22
从长度为n的采用顺序存储结构的线性表中删除第i(1£妬+1)个元素,需向前移动回答
n-i
个元素。
题目23
数据结构按结点间的关系,可分为4种逻辑结构:
合、―性结构、
、■寸形结构、状结构°_
题目24
数据的逻辑结构在计算机中的表示称为储结构或理结构°_
题目25
除了第1个和最后一个结点外,其余结点有且只有一个前驱结点和后继结点的数据结构为
线性结构非线性结
回答,每个结点可有任意多个前驱和后继结点数的结构为回答
结构。
结构。
线性结构数据结构中的数据元素存在一对一的关系称为回答结构。
题目29
要求在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。
则比较的次数
和算法的时间复杂度分别为__n-1和__0(n)
题目30
在一个单链表中p所指结点之后插入一个s所指结点时,应执行回答
s->next=p->next;和p->next=s;的操作。
题目31
设有一个头指针为head的单向循环链表,p指向链表中的结点,若p->next=回答
head
I,贝Up所指结点为尾结点。
题目32
在一个单向链表中,要删除p所指结点,已知q指向p所指结点的前驱结点。
则可以用操
作回答。
正确答案是:
q->next=p->next;
题目33
设有一个头指针为head的单向链表,p指向表中某一个结点,且有p->next==NULL,通
过操作回答,就可使该单向链表构形成单向循环链表。
正确答案是:
p->next=head;
题目34
单向循环链表是单向链表的一种扩充,当单向链表带有头结点时,把单向链表中尾结点的
指针域由空指针改为回答;当单向链表不带头结点时,则把单向链表中尾结点的
指针域由空指针改为指向回答。
答案:
头结点的指针、指向第一个结点的指针
题目35
线性链表的逻辑关系是通过每个结点指针域中的指针来表示的。
其逻辑顺序和物理存储顺
序不再一致,而是一种回答
存储结构,又称为回答
答案:
链式、链表三、问答题(第1小题7分,第2小题8分)
题目36
简述数据的逻辑结构和存储结构的区别与联系,它们如何影响算法的设计与实现?
答:
若用结点表示某个数据元素,则结点与结点之间的逻辑关系就称为数据的逻辑结构。
数据在计算机中的存储表示称为数据的存储结构。
可见,数据的逻辑结构是反映数据之间的固有关系,而数据的存储结构是数据在计算机中的存储表示。
尽管因采用的存储结构不同,逻辑上相邻的结点,其物理地址未必相同,但可通过结点的内部信息,找到其相邻的结点,从而保留了逻辑结构的特点。
采用的存储结构不同,对数据的操作在灵活性,算法复杂度等方面差别较大。
题目37
解释顺序存储结构和链式存储结构的特点,并比较顺序存储结构和链式存储结构的优缺点。
答:
顺序结构存储时,相邻数据元素的存放地址也相邻,即逻辑结构和存储结构是统一的,要求内存中存储单元的地址必须是连续的。
优点:
一般情况下,存储密度大,存储空间利用率高。
缺点:
(1)在做插入和删除操作时,需移动大量元素;
(2)由于难以估计,必须预先分
配较大的空间,往往使存储空间不能得到充分利用;(3)表的容量难以扩充。
链式结构存储时,相邻数据元素可随意存放,所占空间分为两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。
优点:
插入和删除元素时很方便,使用灵活。
缺点:
存储密度小,存储空间利用率低。
四、程序填空题(每空1分,共15分)
题目38
下列是用尾插法建立带头结点的且有n个结点的单向链表的算法,请在空格内填上适当的
语句。
NODE*create1(n)
/*对线性表(1,2,••…,n)建立带头结点的单向链表*/
{
NODE*head,*p,*q;
inti;
p=(NODE*)malloc(sizeof(NODE));
head=p;q=p;p_>next=NULL;
for(i=1;i<=n;i++)
{
p=(NODE*)malloc(sizeof(NODE));
p->data=i
回答
p->next=NULL
回答
回答
q->next=p
q=p
回答
}
return(head);
}
题目39
下列是用头插法建立带头结点的且有n个结点的单向链表的算法,请在空格内填上适当的
语句。
NODE*create2(n)
/*对线性表(n,n-1,••…,1),建立带头结点的线性链表*/
{
NODE*head,*p,*q;
inti;
p=(NODE*)malloc(sizeof(NODE));
回答
head=p
p->next=NULL;
q=p
回答
for(i=1;i<=n;i++)
{
p=(NODE*)malloc(sizeof(NODE));
if(i==1)
p->next=NULL回答
else
|p_>next=q_>next
——
回答
q->next=p
}
return(head);
}
题目40
下列是在具有头结点单向链表中删除第i个结点的算法,请在空格内填上适当的语句。
intdelete(NODE*head,inti)
{
NODE*p,*q;
intj;
q=head;
j=0;
while((q!
=NULL)&&(j向它*/
{
回答
q=q->next
j++;
}
if(q==NULL)
return(O);
p=q_>next
回答
回答
q_>next=p_>next
free(p);
return
(1);
}
题目41
下列是在具有头结点单向列表中在第i个结点之前插入新结点的算法,请在空格内填上适
当的语句。
intinsert(NODE*head,intx,inti)
{
NODE*q,*p;
intj;
q=head;
j=0;
while((q!
=NULL)&&(j{q=q->next;j++;}
if(q==NULL)return(O);
(NODE*)malloc(sizeof(NODE))
p=回答
|
p->next=q->next
正确
正确答案是:
p->next=q->next
获得1.00分中的1.00分
q->next=p
回答
return
(1);
}
形考任务2
题目1
若让元素1,2,3依次进栈,则出栈顺序不可能为()。
选择一项:
A.2,1,3
B.3,1,2
r
C.3,2,1
题目2
一个队列的入队序列是1,2,3,4。
则队列的输出序列是()。
选择一项:
题目3
向顺序栈中压入新元素时,应当()。
选择一项:
A.先存入元素,再移动栈顶指针
B.先移动栈顶指针,再存入元素
C.先后次序无关紧要
D.同时进行
题目4
在一个栈顶指针为top的链栈中,将一个p指针所指的结点入栈,应执行()。
选择一项:
题目5
在一个栈顶指针为top的链栈中删除一个结点时,用x保存被删结点的值,则执行
()°
选择一项:
*A.x=top->data;top=top->next;
B.x=top->data;
Cl
C.top=top->next;x=top->data;
D.x=top;top=top->next;
题目6
判断一个顺序队列(最多元素为m)为空的条件是()。
选择一项:
A.rear==m-1
B.front==rear+1
C.front==rear
题目7
判断一个循环队列Q(最多元素为m)为满的条件是()。
选择一项:
A.Q->rear!
=(Q->front+1)%m
B.Q->front==Q->rear
C.Q->front==(Q->rear+1)%m
D.Q->front=Q->rear+1
题目8
判断栈满(元素个数最多n个)的条件是()。
选择一项:
A.top==0
B.top!
=0
C.top=-1
D.top==n-1
题目9
设有一个20阶的对称矩阵A(第一个元素为ai,i),采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵元素少2在一维数组
B中的下标是()。
选择一项:
*A.17
B.23
C.21
D.28
题目10
在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印数据缓冲区,主机将要输出的数据依次写入缓冲区中,而打印机则从缓冲区中取出数据打印,该缓冲区应该是一个()结构。
选择一项:
'■*A.队列
B.先性表
C.数组
D.堆栈
题目11
一个递归算法必须包括()。
选择一项:
A.递归部分
B.迭代部分
C.终止条件和迭代部分
二—D.终止条件和递归部分
题目12
在一个链队中,假设f和r分别为队头和队尾指针,则删除一个结点的运算为()。
选择一项:
jrI
&A.f=r->next;
B.r=r->next;
口C.r=f->next;
A
D.f=f->next;
在一个链队中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算为
()°
选择一项:
A.s->next=r;r=s;
B.r->next=s;r=s;
C.s->next=f;f=s;
D.f->next=s;f=s;
题目14
数组a经初始化chara[]=English”;a[7]中存放的是()。
选择一项:
题目15
设主串为“ABcCDABcdEFaBc”,以下模式串能与主串成功匹配的是()。
选择一项:
D.ABC
题目16
字符串a仁"AEIJING",a2="AEI",a3="AEFANG",a4="AEFI"中最大的是()。
选择一项:
A.a3
B.a1
C.a4
D.a2
题目17
两个字符串相等的条件是()。
选择一项:
A.两串的长度相等,并且对应位置上的字符相同
◎B.两串的长度相等
因C.两串的长度相等,并且两串包含的字符相同
D.两串包含的字符相同
题目18
一维数组A采用顺序存储结构,每个元素占用6个字节,第6个元素的存储地址为100,
则该数组的首地址是()。
选择一项:
A.64
B.90
°C.28
*D.70
题目19
一个非空广义表的表头()。
选择一项:
同A.可以是子表或原子
I'
B.只能是原子
01
1.J
C.不可能是原子
.D.只冃匕疋子表
题目20
对稀疏矩阵进行压缩存储,可采用三元组表,一个10行8列的稀疏矩阵A,其相应的三元组表共有6个元素,矩阵A共有()个零元素。
选择一项:
A.8
B.10
°C.72
D.74
题目21
对稀疏矩阵进行压缩存储,可采用三元组表,一个10行8列的稀疏矩阵A共有73个零元素,A的右下角元素为6,其相应的三元组表中的第7个元素是()。
选择一项:
A.(10,8,7)
C*
B.(10,8,6)
C.(7,10,8)
D.(7,8,10)
对一个栈顶指针为top的链栈进行入栈操作,通过指针变量p生成入栈结点,并给
该结点赋值a,则执行:
p=(structnode*)malloc(sizeof(structnode);p->data=a;禾口
()。
选择一项:
A.p_>next=top;p=top;
B.top->next=p;p=top;
题目23
头指针为head的带头结点的单向链表为空的判定条件是()为真。
选择一项:
询A.head==NULL
*B.head-〉next==NULL
C.head->next!
=NULL
D.head->next!
=NULL
题目24
设有一个对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),B数组共有55个元素,则该矩阵是()阶的对称矩
阵。
选择一项:
A.20
B.15
题目25
数组a经初始化chara[]=English”;a[1]中存放的是()。
选择一项:
D.字符E
二、填空题(每小题2分,共30分)
题目26
循环队列队头指针在队尾指针回答
下一个
位置,队列是“满”状态。
假上溢循环队列的引入,目的是为了克服回答
LU->front==LU->rear
。
题目28
判断一个循环队列LU(最多元素为m)为空的条件是回答
题目29
题干
向一个栈顶指针为h的链栈中插入一个s所指结点时,可执行回答s->next=h;和h=s;操
作。
(结点的指针域为next)
题目30
从一个栈顶指针为h的链栈中删除一个结点时,用x保存被删结点的值,可执行x=h-题目
31
在一个链队中,设f和r分别为队头和队尾指针,则插入s所指结点的操作为回答和r=s;r->next=s;(结点的指针域为next)
题目32
在一个链队中,设f和r分别为队头和队尾指针,则删除一个结点的操作为回答f=f-
>next;。
(结点的指针域为next)
题目33
串是一种特殊的线性表,其特殊性表现在组成串的数据元素都是回答
字符
。
题目34
~0~
空串的长度是回答
;空格串的长度是回答空格字符的
题目35
设广义表L=((),()),则表头是尾是」L的长度是
则表头是(),表尾是(()),L的长度是2
题目36
广义表A((a,b,c),(d,e,f))的表尾为回答((d,e,f))。
题目37
设有n阶对称矩阵A,用数组s进行压缩存储,当i》j时,A的数组元素am相应于数组s
i(i-1)/2+j
的数组元素的下标为回答。
(数组元素的下标从1开始)
对稀疏矩阵进行压缩存储,矩阵中每个非零元素对应的三元组包括该元素的、
和三项信息。
答案:
行下标、列下标和非零元素值
题目39
循环队列用a[0],…,a[7]的一维数组存放队列元素,(采用少用一个元素的模式),设
front和rear分别为队头和队尾指针,且front和rear的值分别为2和7,当前队列中的元
素个数是回答5。
题目40
假上溢
循环队列的引入,目的是为了克服回答。
三、问答题(每小题5分,共20分)
题目41
完成
满分5.00
题干
栈、队列和线性表的区别是什么?
答:
栈是一种先进后出的线性表,栈的插入和删除操作都只能在栈顶进行,而一般的线性表可以在线性表的任何位置进行插入和删除操作。
队列是一种先进先出的线性表,队列的插入只能在队尾进行,队列的删除只能在队头进行,而一般的线性表可以在线性表的任何位置进行插入和删除操作。
题目42
设栈S和队列Q的初始状态为空,元素el,e2,e3,e4,e5和e6依次通过S,—个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,el,则栈S的容量至少应该是多少?
出队序列是e2,e4,e3,e6,e5,e1的过程:
(1)e1入栈(栈底到栈顶元素是e1)
(2)e2入栈(栈底到栈顶元素是e1,e2)
(3)e2出栈(栈底到栈顶元素是e1)
(4)e3入栈(栈底到栈顶元素是e1,e3)
(5)e4入栈(栈底到栈顶元素是e1,e3,e4)
(6)e4出栈(栈底到栈顶元素是e1,e3)
(7)e3出栈(栈底到栈顶元素是e1)
(8)e5入栈(栈底到栈顶元素是e1,e5)
(9)e6入栈(栈底到栈顶元素是e1,e5,e6)
(10)e6出栈(栈底到栈顶元素是e1,e5)
(11)e5出栈(栈底到栈顶元素是e1)
(12)e1出栈(栈底到栈顶元素是空)
栈中最多时有3个元素,所以栈S的容量至少是3。
有5个元素,其入栈次序为:
A、B、C、D、E,在各种可能的出栈次序中,以元素C、D
最先的次序有哪几个?
从题中可知,要使C第一个且D第二个出栈,应是A入栈,B入栈,C入栈,C出栈,D
入栈。
之后可以有以下几种情况:
(1)
B出栈,
A出栈,
E入栈,
E出栈,
输出序列为:
CDBAE
(2)
B出栈,
E入栈,
E出栈,
A出栈,
输出序列为
CDBEA。
(3)
E入栈,
E出栈,
B出栈,
A出栈,
输出序列为
CDEBA
所以可能的次序有:
CDBAE,CDBEA,CDEBA
题目44
简述广义表和线性表的区别和联系。
广义表是线性表的的推广,它也是n(n>0)个元素ai,a2,…,a.-,an的有限序列,其
中a或者是原子或者是一个广义表。
所以,广义表是一种递归数据结构,而线性表没有这种特性,线性表可以看成广义表的特殊情况,当a:
都是原子时,广义表退化成线性表。
形考任务三
一、单项选择题(每小题2分,共32分)
|0
题目1
假定一棵二叉树中,双分支结点数为()。
选择一项:
A.17