第2章 线性表

【Test】单元测试 - 链式存储结构

1、单选题:
‏【2-1-1】在下列关于线性表的叙述中正确的是(  )。‎
选项:
A: A.线性表的逻辑顺序与物理顺序总是一致的
B: B.线性表的顺序存储表示优于链式存储表示
C: C.线性表若采用链式存储表示时所有存储单元的地址可连续可不连续
D: D.除数组外,每种数据结构都应具备3种基本运算:插入、删除和查找
答案: 【 D.除数组外,每种数据结构都应具备3种基本运算:插入、删除和查找

2、单选题:
‏【2-1-2】数据结构反映了数据元素之间的结构关系。单链表是一种(  )。‌
选项:
A: A.顺序存储线性表  
B: B.非顺序存储非线性表      
C: C.顺序存储非线性表
D: D.非顺序存储线性表
答案: 【 D.非顺序存储线性表

3、单选题:
​【2-1-3】单链表又称为线性链表,在单链表上实施插入和删除操作(  )。‏
选项:
A: A.不需移动结点,不需改变结点指针  
B: B.不需移动结点,只需改变结点指针
C: C.只需移动结点,不需改变结点指针 
D: D.既需移动结点,又需改变结点指针
答案: 【 B.不需移动结点,只需改变结点指针

4、单选题:
‍【2-1-4】已知单链表中结点*q是结点*p的直接前趋,若在*q与*p之间插入结点*s,则应执行以下(  )操作。‍
选项:
A: A.s->next=p->next;p->next=s;
B: B.q->next=s;s->next=p;
C: C.p->next=s->next;s->next=p;
D: D.p->next=s;s->next=q;
答案: 【 B.q->next=s;s->next=p;

5、单选题:
‌【2-1-5】已知单链表中结点*p不是链表的尾结点,若在*p之后插入结点*s,则应执行以下(  )操作。‍
选项:
A: A.s->next=p;p->next=s;
B: B.p->next=s;s->next=p;
C: C.s->next=p->next;p=s;
D: D.s->next=p->next;p->next=s;
答案: 【 D.s->next=p->next;p->next=s;

6、单选题:
‌【2-1-6】已知L是带头结点的单链表,则摘除首结点的语句是(  )。‎
选项:
A: A.L=L->next;
B: B. L->next=L->next->next;
C: C.L=L->next->next;
D: D.L->next=L;
答案: 【 B. L->next=L->next->next;

7、单选题:
​【2-1-7】已知单链表A长度为m,单链表B长度为n,若将B链接在A的末尾,在没有链尾指针的情形下,算法的时间复杂度应为(  )。‍
选项:
A: A.O(1)   
B: B.O(m)  
C: C.O(n)  
D: D.O(m+n)
答案: 【 B.O(m)  

8、单选题:
​【2-1-8】给定有n个元素的一维数组,建立一个有序单链表的时间复杂度是(  )。‌
选项:
A: A.O(1)  
B: B.O(n) 
C: C.O(n^2)
D: D.O(nlog2n)
答案: 【 C.O(n^2)

9、填空题:
‎【2-2】下面算法的功能是:统计带头结点的单链表中具有给定值x的所有元素个数。请在空白处填入正确的语句。(每空5分)​‎​‎int Count(LinkList  &L, ElemType x)
{
    int count = 0;
    LinkList p = _______①______;          
    while(p != NULL) {             
        if(_____②______)              
            _____③____;
        p = p->next;                  
    }
    _______④_______;
}​‎​
答案: 【 答案:
1、L->next
2、p->data == x
3、count++
4、return count

10、填空题:
‎【2-3】下面算法的功能是:根据一维数组A[n]建立一个带头结点的单链表,使单链表中各元素的次序与A[n]中各元素的次序相同。请在空白处填入正确的语句。(每空5分)​‎​‎void CreateList(LinkList &L, ElemType A[], int n)
{
    LinkList  rear;
    L = ________①___________;                     
    for(int i = 0; _____②_____; i++) {
        rear->next = (LinkList)malloc(sizeof(LNode));    
        rear = rear->next;                                                 
        ______③________;
    }
    rear->next = ______④_____;                                                              
}​‎​‎​
答案: 【 答案:
1、rear = (LinkList)malloc(sizeof(LNode))
2、i data = A[i]
4、NULL

11、填空题:
​【2-4】下面算法的功能是:对一个表头指针为h的单链表,通过遍历一趟链表,将链表中所有结点的链接方向逆转(将结点中的值倒转,如1→2→3→4变为4→3→2→1)。请在空白处填入正确的语句。(每空5分)‎​‎​void Reverse(LinkList &L)
{
    LinkList p = _____①_____, pr;
    L->next = ____②_____;
    while(p != NULL) {
        _____③_____;
        p = p->next;
        pr->next = L->next;
        ______④_____;
    }    
}‎​‎​‎
答案: 【 答案:
1、L->next
2、NULL
3、pr = p
4、L->next = pr

【Test】单元测试 - 顺序存储结构

1、单选题:
‌【TEST-2-1-1】下列关于线性表的叙述中正确的是(    )。‏
选项:
A: A.每个元素最多有一个直接前趋和一个直接后继
B: B.每个元素最少有一个直接前趋和一个直接后继
C: C.每个元素有且仅有一个直接前趋,有且仅有一个直接后继
D: D.线性表中每个元素都是不可再分解的数据元素,且数据类型必须相同
答案: 【 A.每个元素最多有一个直接前趋和一个直接后继

2、单选题:
​【TEST-2-1-2】在二维表格(线性表)中的每一个表元素都是不可再分的(    )。‏
选项:
A: A.数据项
B: B.记录
C: C.数据元素
D: D.字段
答案: 【 C.数据元素

3、单选题:
‎【TEST-2-1-3】以下关于顺序表的说法中,正确的是( )。‏
选项:
A: A.顺序表可以利用一维数组表示,因此顺序表与一维数组在结构上是一致的,它们可以通用
B: B.在顺序表中,逻辑上相邻的元素在物理位置上不一定相邻
C: C.顺序表和一维数组一样,都可以按下标随机(或直接)访问,顺序表还可以从某一指定元素开始,向前或向后逐个元素顺序访问
D: D.在顺序表中每一元素的数据类型还可以是顺序表
答案: 【 C.顺序表和一维数组一样,都可以按下标随机(或直接)访问,顺序表还可以从某一指定元素开始,向前或向后逐个元素顺序访问

4、单选题:
​【TEST-2-1-4】设线性表有n个元素且采用顺序存储表示,算法的时间复杂度为O(1)的操作是(  )。‏
选项:
A: A.访问第i个元素和求第i个元素的直接前趋(2≤i≤n)
B: B.在第i(1≤i≤n)个元素后面插入一个新元素
C: C.删除数组第i个元素
D: D.顺序查找与给定值k相等的元素
答案: 【 A.访问第i个元素和求第i个元素的直接前趋(2≤i≤n)

5、单选题:
​【TEST-2-1-6】在以下有关顺序表的叙述中正确的是(   )‌
选项:
A: A.顺序表的优点是存储密度高
B: B.集合与顺序表的区别在于集合中的元素不能相等
C: C.线性表就是顺序存储的表
D: D.取顺序表第i个元素的时间与i的大小有关
答案: 【 A.顺序表的优点是存储密度高

6、填空题:
‎【TEST-2-2】下面算法的功能是:从顺序表中删除具有最小值的元素并由函数返回被删元素的值。空出的位置由最后一个元素填补,当顺序表为空则显示出错信息并退出运行。请在空白处填入正确的语句。(每空5分)‍‎‍‎int deleteMin(SqList &L, ElemType &x)

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注