线性表复习试题二2010.11.24
(2010-11-26 09:56:36)
标签:
教育 |
分类: 练习试题 |
一、单项选择题(共30题,每题1分,共计30分)
2.线性结构中的一个结点代表一个
3.顺序表的一个存储结点仅仅存储线性表的一个
4.顺序表是线性表的
5.对于顺序表,以下说法错误的是
6.对顺序表上的插入、删除算法的时间复杂性分析来说,通常以(
7.对于顺序表的优缺点,以下说法错误的是
8.指针的全部作用就是
9.单链表的一个存储结点包含 ( )
10.有时为了叙述方便,可以对一些概念进行简称,以下说法错误的是
A.将“指针型变量”简称为“指针”
B.将“头指针变量”称为“头指针”
C.将“修改某指针型变量的值”称为“修改某指针”
D.将“p中指针所指结点”称为“P值”
11.设指针P指向双链表的某一结点,则双链表结构的对称性可用(
A. p->prior->next->==p->next->next
B. p->prior->prior->==p->next->prior
C. p->prior->next->==p->next->prior
D. p->next->next==p->prior->prior
12.以下说法错误的是 (
A.对循环链表来说,从表中任一结点出发都能通过前后操作而扫描整个循环链表
B.对单链表来说,只有从头结点开始才能扫描表中全部结点
C.双链表的特点是找结点的前趋和后继都很容易
D.对双链表来说,结点*P的存储位置既存放在其前趋结点的后继指针域中,也存放在它的后继结点的前趋指针域中。
13.在循环链表中,将头指针改设为尾指针(rear)后,其头结点和尾结点的存储位置分别是
A. rear和rear->next->next
B. rear->next 和rear
C. rear->next->next和rear
D. rear和rear->next
14.以下说错误的是
A.对于线性表来说,定位运算在顺序表和单链表上的量级均为O(n)
B.读表元运算在顺序表上只需常数时间O(1)便可实现,因此顺序表是一种随机存取结构.
C.在链表上实现读表元运算的平均时间复杂性为O(1)
D.链入、摘除操作在链表上的实现可在O(1)时间内完成
E.链入、摘除操作在顺序表上的实现,平均时间复杂性为O(n)
15.循环链表主要优点是
A.不再需要头指针了
B.已知某个结点的位置后,能够容易找到它的直接前趋
C.在进行插入、删除运算时,能更好地保证链表不断开
D.从表中任一结点出发都能扫描到整个链表
16.以下说法错误的是
A.数据的物理结构是指数据在计算机内实际的存储形式
B.算法和程序没有区别,所以在数据结构中二者是通用的
C.对链表进行插人和删除操作时,不必移动结点
D.双链表中至多只有一个结点的后继指针为空
17.以下说法正确的是
A.线性结构的基本特征是:每个结点有且仅有一个直接前趋和一个直接后继
B.线性表的各种基本运算在顺序存储结构上的实现均比在链式存储结构上的实现效率要低
C.在线性表的顺序存储结构中,插人和删除元素时,移动元素的个数与该元素位置及表长有关
D.顺序存储的线性表的插人和删除操作不需要付出很大的代价,因为平均每次操只有近一半的元素需要移动
18.以下说法错误的是
A.求表长、定位这二种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低
B.顺序存储的线性表可以随机存取
C.由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活
D.线性表的链式存储结构优于顺序存储结构
19.以下说法正确的是(
A.顺序存储方式的优点是存储密度大、且插入、删除运算效率高
B.链表的每个结点中都恰好包含一个指针
C.线性表的顺序存储结构优于链式存储结构
D.顺序存储结构属于静态结构,链式结构属于动态结构
20.下面关于线性表的叙述正确的是(
A.线性表采用顺序存储,不必占用一片连续的存储单元
B.线性表采用顺序存储,便于进行插人和删除操作
C.线性表采用链接存储,不必占用一片连续的存储单元
D.线性表采用链接存储,不便于插人和删除操作
21.线性表L=(a1,a2,...,ai,...,an),下列说法正确的是(
A.每个元素都有一个直接前驱和直接后继
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小的
D.除第一个元素和最后一个元素外其余每个元素都有一个且仅有一个直接前驱和直接后继
22.线性表的逻辑顺序与存储顺序总是一致的,这种说法(
A.正确
23.设p,q是指针,若p=q,则*p=*q
,这种说法(
A.正确
24.设REAR是指向非空带头结点的循环单链表的尾指针,则删除表首结点的操作可表示为(
A.
p=rear;
rear=rear->next;
free(p)
C.
rear=rear->next->next;
free(rear);
25. 单链表中,增加头结点的目的是为了
A.使单链表至少有一个结点
C.方便运算的实现
26.线性结构中的一个结点代表一个数据元素,通常要求同一线性结构的所有结点所代表的数据元素具有相同的特性,这意味着
A.每个结点所代表的数据元素都一样。
B.每个结点所代表的数据元素包含的数据项的个数要相等
C.不仅数据元素包含的数据项的个数要相同,而且对应数据项的类型要一致
D.结点所代表的数据元素有同一特点
27.带头结点的单链表Head为空的判定条件是
A.
Head=Null
28.非空的单循环链表L的尾结点*P,满足
A.
P->next=NULL
29.双向链表结点结构如下:
|
|
RLink |
其中:LLink是指向前驱结点的指针域:
data是存放数据元素的数据域;
Rlink是指向后继结点的指针域。
下面给出的算法段是要把一个新结点*Q作为非空双向链表中的结点*p的前驱,插入到此双向链表中。不能正确完成要求的算法段是
A.
Q->LLink=P->LLink;
Q->Rlink=P;
P->LLink=Q;
P->LLink->Rlink=Q;
C. Q->LLink=P->LLink;
Q->Rlink=P;
P->LLink->Rlink=Q;
P->LLink=Q;
30.若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用(
A.
顺序表
二、 填空题(每空4分,共20分)
1、已知p结点是某双链表的中间结点,试从下列提供的答案这选择合适的语句序列。
(1)P->next=p->next->next
;
(7)
S->next=P->next;
(10)
P->prior->next=P;
(13)
P->prior->next=S;
(16)
Q=P->prior;
三、读程序写结果(共4题,每题8分,共计32分)
1. #include<stdio.h>
int main()
{
}
输入:9 19 29
39
输出:
2.#include<stdio.h>
void foo(int a, int b, int c)
{
}
int main()
{
}
输入: 3 1
2
3.#include <stdio.h>
void func(int ary[], int n )
{
}
int main()
{
}
输入:5 4 -6 -11 6 -59 22 -6 1
10
4. #include<stdio.h>
#define MAX 100
void solve(char first[], int spos_f, int epos_f, char mid[], int spos_m, int epos_m)
{
}
int main()
{
}
输入:
ABDCEGF
BDAGECF
四、完善程序(共10题,每题3分,其中第4、7、8题,每题4分,第9题8(3+3+2)分。共38分)
1、INITIATE()的功能是建立一个空表。请在________处填上正确的语句。
{ t = malloc (size);
}
2、以下为顺序表的插入运算,分析算法,请在______处填上正确的语句。
Void insert_sqlist(sqlist L,datatype x,int i)
{ if( L.last == maxsize) error(“表满”);
if((i<1)||(i>L.last+1))error(“非法位置”);
for (j=L.last;j>=i;j--)______;
L.data [i-1]=x;
L.last =L.last+1;
}
3、以下为顺序表的删除运算,分析算法,请在________处填上正确的语句。
void delete_sqlist(sqlist L,int i)
{if((i<1)||(i>L.last))error(“非法位置”);
}
4、以下为求单链表表长的运算,分析算法,请在 ________处填上正确的语句。
j=0;
while(p->next!=NULL)
}
return(j);
}
5、以下为单链表按序号查找的运算,分析算法,请在____处填上正确的语句。
}
6、以下为单链表的定位运算,分析算法,请在____处填上正确的语句。
while(________________________________){p=p->next;j++;}
if (p->data==x) return(j);
else
}
7、以下为单链表的删除运算,分析算法,请在____处填上正确的语句。
{ p=find_lklist(head,i-1);
}
8、以下为单链表的插入运算,分析算法,请在____处填上正确的语句。
if(p==NULL)error(“不存在第i个位置”);
else {s= mailloc(size);____________=x;
}
9、以下为单链表的建表算法,分析算法,请在____处填上正确的语句。
{ head=malloc(size);
}
10、以下为顺序表的定位运算,分析算法,请在________处填上正确的语句。
int locate_sqlist(sqlist L,datatype X)
{i=1;
}
线性表复习试题二答案(满分120分)
一、 单项选择题(共30题,每题1分,共计30分)
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
B |
A |
A |
B |
A |
B |
C |
C |
D |
D |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
C |
A |
B |
C |
D |
B |
C |
D |
D |
C |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
D |
B |
B |
D |
C |
C |
B |
C |
B |
A |
二、 填空题(每空4分,共20分)
三、阅读程序写结果(共4题,每题8分,共计32分)
1、
3、 5 4 10 1 6 22 -59 -6 -11 -6
三、
完善程序(共10题,每题3分,其中第4、7、8题,每题4分,第9题8(3+3+2)分。共38分)
1、t->next=NULL
2、L.data[j]=L.data[j-1]
3、L.data[j-2]=L.data[j-1]
4、p=head
5、(p->next!=NULL)&&(j<I)
6、(p->next!=NULL)&&(p->data!=x)
7、(p!=NULL)&&(p->next!=NULL)
8、s->data,
9、p=q(或者p=p->next)
10、L.data[i]==x