形考作业1
试卷总分:100 得分:100
一、单项选择题(每小题3分,共60分)
1.把数据存储到计算机中,并具体体现数据元素间的逻辑结构称为( )。
A.逻辑结构
B.物理结构
C.算法的具体实现
D.给相关变量分配存储单元
2.下列说法中,不正确的是( )。
A.数据元素是数据的基本单位
B.数据项是数据中不可分割的最小可标识单位
C.数据可有若干个数据元素构成
D.数据项可由若干个数据元素构成
3.一个存储结点存储一个( )。
A.数据项
B.数据元素
C.数据结构
D.数据类型
4.数据结构中,与所使用的计算机无关的是数据的( )。
A.存储结构
B.物理结构
C.逻辑结构
D.物理和存储结构
5.在线性表的顺序结构中,以下说法正确的是( )。
A.逻辑上相邻的元素在物理位置上不一定相邻
B.数据元素是不能随机访问的
C.逻辑上相邻的元素在物理位置上也相邻
D.进行数据元素的插入、删除效率较高
6.对链表, 以下叙述中正确的是( )。
A.不能随机访问任一结点
B.结点占用的存储空间是连续的
C.插入删除元素的操作一定要要移动结点
D.可以通过下标对链表进行直接访问
7.下列的叙述中,不属于算法特性的是( )。
A.有穷性
B.输入性
C.可行性
D.可读性
8.算法的时间复杂度与( )有关。
A.所使用的计算机
B.计算机的操作系统
C.算法本身
D.数据结构
9.设有一个长度为n的顺序表,要在第i个元素之前(也就是插入元素作为新表的第i个元素),插入一个元素,则移动元素个数为( )。
A.n-i+1
B.n-i
C.n-i-1
D.i
奥鹏作业答案请进open5.net或请联系QQ/微信:18866732
10.设有一个长度为n的顺序表,要删除第i个元素移动元素的个数为( )。
A.n-i+1
B.n-i
C.n-i-1
D.i
11.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用语句( )。
A.p=q->next
B.p->next=q
C.p->next=q->next
D.q->next=NULL
12.在一个单链表中p所指结点之后插入一个s所指的结点时,可执行( )。
A.p->next= s; s->next= p->next
B.p->next=s->next;
C.p=s->next
D.s->next=p->next; p->next=s;
13.非空的单向循环链表的尾结点满足( )(设头指针为head,指针p指向尾结点)。
A.p->next==head
B.p==NULL
C.p->next==NULL
D.p== head
14.链表不具有的特点是( )。
A.可随机访问任一元素
B.插入删除不需要移动元素
C.不必事先估计存储空间
D.逻辑上相邻的元素在物理位置上不一定相邻
15.带头结点的链表为空的判断条件是( )(设头指针为head)。
A.head ==NULL
B.head->next==NULL
C.head->next==head
D.head!=NULL
16.在一个长度为n的顺序表中为了删除第5个元素,由第6个元素开始从后到前依次移动了15个元素。则原顺序表的长度为( )。
A.21
B.20
C.19
D.25
17.有关线性表的正确说法是( )。
A.每个元素都有一个直接前驱和一个直接后继
B.线性表至少要求一个元素
C.表中的元素必须按由小到大或由大到下排序
D.除了一个和最后一个元素外,其余元素都有一个且仅有一个直接前驱和一个直接后继
18.向一个有127个元素的顺序表中插入一个新元素,并保持原来的顺序不变,平均要移动( )个元素。
A.8
B.7
C.63
D.63.5
19.一个顺序表第一个元素的存储地址是90,每个元素的长度为2,则第6个元素的地址是( )。
A.98
B.100
C.102
D.106
20. 在一个不带头结点的单循环链表中,p、q分别指向表中第一个结点和尾结点,现要删除第一个结点,且p、q仍然分别指向新表中第一个结点和尾结点。可用的语句是p=p->next;和( )。
A.p=q->next
B.p->next=q
C.q=p
D.q->next=p
二、判断题( 每小题2分,14题,共28分)
21.数据元素可以有一个或多个数据项组成。
22.数据元素之间的抽象关系称为物理结构。
23.数据的逻辑结构在计算机中的表示称为逻辑结构。
24.数据的逻辑结构是与存储该结构的计算机相关的。
25.数据结构中,元素之间存在多对多的关系称为树状结构。
26.通常可以把一本含有不同章节的书的目录结构抽象成线性结构。
27.通常可以把某城市中各公交站点间的线路图抽象成树型结构。
28. 设有一个不带头结点的单向循环链表,结点的指针域为next,指针p指向尾结点,现要使p指向第一个结点,可用语句p=p->next;。
29. 设有一个单向链表,结点的指针域为next,头指针为head,p指向尾结点,为了使该单向链表改为单向循环链表,可用语句p->next=head。
30. 设有一个单向循环链表,结点的指针域为next,头指针为head,指针p指向表中某结点,若逻辑表达式p->next==head;的结果为真,则p所指结点为尾结点。
31. 要在一个单向链表中p所指向的结点之后插入一个s所指向的新结点,若链表中结点的指针域为next,可执行 p->next=s; s->next= p->next;的操作。
32. 要在一个单向链表中删除p所指向的结点,已知q指向p所指结点的直接前驱结点,若链表中结点的指针域为next,则可执行q->next= p->next;
33. 要在一个带头结点的单向循环链表中删除头结点,得到一个新的不带头结点的单向循环链表,若结点的指针域为next,头指针为head,尾指针为p,则可执行head=head->next;p->next=head;。
34. 设有一个单向循环链表,头指针为head,链表中结点的指针域为next,p指向尾结点的直接前驱结点,若要删除尾结点,得到一个新的单向循环链表,可执行操作p->next=head;。
三、程序填空题(每小题6分,共12分。请点击正确选项,然后拖拽至相应的方框上)
35. 设线性表以不带头结点的单向链表存储,链表头指针为head,以下程序的功能是输出链表中各结点中的数据域data,完成程序中空格部分。
#define NULL 0
void main( )
{ NODE *head ,*p ;
p=head; /*p为工作指针*/
do
{printf(“%d\n”, __(1)__;
__(2)__;
}while__(3)__;
}
(1).选项1
(2).选项2
(3).选项3
36. 设有一个头指针为head的不带头结点单向链表,p、q是指向链表中结点类型的指针变量,p指向链表中结点a, (设链表中没有结点的数据域与结点a的数据域相同),写出相关语句
(1)使该单向链表成为单向循环链表
(2)插入结点s,使它成为a结点的直接前驱
q=p; x=p->data;
while __(1)__)q=q->next;
q->next=head;
q=p; p=p->next;
while(p->data!=x)
{ q=p;
__(2)__
}
s->next=p;
__(3)__
(1).选项1
(2).选项2
(3).选项3