搜档网
当前位置:搜档网 › 第2章线性表题目

第2章线性表题目

第2章线性表题目
第2章线性表题目

第2章自测卷答案

一、填空

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

2. 线性表中结点的集合是有序的的,结点间的关系是独立的。

3. 向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1 个元素。

4. 向一个长度为n的向量中删除第i个元素(1≤i≤n)时,需向前移动n-i个元素。

三、单项选择题

1、线性表是(C )的有限序列。

A、数据

B、数据项

C、数据元素

D、表元素

2、以下关于线性表的说法不正确的是(C )。

A、线性表中的数据元素可以是数字、字符、记录等不同类型。

B、线性表中包含的数据元素个数不是任意的。

C、线性表中的每个结点都有且只有一个直接前驱和直接后继。

D、存在这样的线性表:表中各结点都没有直接前驱和直接后继。

3、顺序表是线性表的(B )。

A、链式存储结构

B、顺序存储结构

C、索引存储结构

D、散列存储结构

4、对于顺序表的优缺点,以下说法错误的是(C )。

A、无需为表示结点间的逻辑关系而增加额外的存储空间

B、可以方便地随机存取表中的任一结点

C、插人和删除运算较方便

D、容易造成一部分空间长期闲置而得不到充分利用

5、在顺序表中,只要知道(D),就可在相同时间内求出任一结点的存储地址。

A、基地址

B、结点存储长度

C、向量大小

D、基地址和存储长度

6、一个顺序表第一个元素的存储地址是100,每个元素的存储长度为4,则第5个元素的地址是(B)。

A、110

B、116

C、100

D、120

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

A、n-i

B、n-i+1

C、n-i-1

D、i

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

A、n-i

B、n-i+1

C、n-i-1

D、i

9、在一个长度为n的顺序表中插入一个结点需平均移动(B )个结点。

A、(n+1)/2

B、n/2

C、(n-1)/2

D、n

10、在一个长度为n的顺序表中删除一个结点需平均移动(C B)个结点。

A、(n+1)/2

B、n/2

C、(n-1)/2

D、n

11、在(D)情况下应当选择顺序表作为数据的存储结构。

A、对线性表的主要操作为插入操作

B、对线性表的主要操作为插入操作和删除操作

C、线性表的表长变化较大

D、对线性表的主要操作为存取线性表的元素

12、下列算法实现在顺序表List的第i(1≤i≤L-pointer->length+1)个结点的位置上插入值为t的元素,其中MaxSize为顺序表List的容量,表中第1个结点的数据存放在数组元素L_pointer->Element[0]中。下列选项中能完成此功能的语句序列为(B C )。

void InsertList(SeqList *L _pointer ,int i,int t)

{//将t插入顺序表L的第i个结点的位置上

int j;

if (L-pointer->length >=MaxSize)

{puts("表满不能插入");return OverFlow;}

else

{

for(j=L-pointer->length;j>=i-1;j--)

①//结点依次后移

②//插入t

③//表长加1

}

}

A、①L_pointer->Element [j-1]= L_pointer->Element [j]; ②L_pointer->Element [i]=t; ③L-pointer->length +1;

B、①L_pointer->Element [j-1]= L_pointer->Element [j]; ②L_pointer->Element [i-1]=t; ③L-pointer->length ++;

C、①L_pointer->Element [j+1]= L_pointer->Element[j]; ②L_pointer->Element [i-1]=t; ③L-pointer->length ++;

D、①L_pointer->Element [j+1]= L_pointer->Element [j]; ②L_pointer->Element [i]=t; ③L-pointer->length +1;

13、下列算法实现删除顺序表List的第i(1≤i≤L_pointer->length)个结点,表中第1个结点的数据存放在数组元素L_pointer->Element [0]中。下列选项中能完成此功能的语句序

列为(C B )。

void DeleteList(SeqList * L_pointer,int i)

{//从顺序表L中删除第i个结点

int j;

if (i<1||i> L_pointer->Length)

{puts("删除位置错");return Error;}

if (L->length==0)

{puts("空表不能删除"); return Error;}

else

{

for(j=i;j<= L_pointer->Length -1;j++)

①//结点依次前移

②//表长减1

}

}

A、①L_pointer->Element [j-1]= L_pointer->Element [j]; ②L-pointer->length -1;

B、①L_pointer->Element [j-1]= L_pointer->Element [j]; ②L-pointer->length --;

C、①L_pointer->Element [j+1]= L_pointer->Element [j]; ②L-pointer->length --;

D、①L_pointer->Element [j+1]= L_pointer->Element [j]; ②L-pointer->length -1;

14、下列算法实现在顺序表List中查找值为t的结点,找到返回位置值i,否则返回-1,表中第1个结点的数据存放在数组元素L_pointer->Element [0]中。下列选项中能完成此功能的选项为(D)。

int SearchList(SeqList * L_pointer,ElementType t)

{//从顺序表L中查找值为t的结点,找到返回位置值i,否则返回-1

int i=1;

while (i<= L_pointer->Length&& ①)

i++;

if( ②)

return i;

else

return -1;

}

A、①L_pointer->Element [i-1] =t ②L_pointer->Element [i-1]!=t

B、①L_pointer->Element [i-1]!=t ②L_pointer->Element [i-1]!=t

C、①L_pointer->Element [i-1]==t ②L_pointer->Element [i-1]=t

D、①L_pointer->Element [i-1]!=t ②L_pointer->Element [i-1]==t

15. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动B C 个元素

(A)8 (B)63.5 (C)63 (D)7

相关主题