第2章线性表题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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