第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 = ________①___________;            

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

发表评论

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