数据结构4 链式存储的线性表

1-1

分数 2

作者 李廷元单位 中国民用航空飞行学院

线性表采用链式存储表示时,所有结点之间的存储单元地址可以连续也可以不连续。

T

F


1-3

分数 2

作者 李廷元单位 中国民用航空飞行学院

顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。

T

F


1-4

分数 2

作者 李廷元单位 中国民用航空飞行学院

在单链表中,要访问某个结点,只要知道该结点的指针即可。因此,单链表是一种随机存取结构。

T

F


1-5

分数 2

作者 DS课程组单位 临沂大学

链式存储的优点是插入、删除元素时不会引起后续元素的移动,缺点是只能顺序访问各元素。

T

F


1-6

分数 2

作者 Martin Ester单位 浙江大学

Given two sorted lists L1 and L2, the fastest algorithm for computing L1⋃L2 has time complexity Θ(NlogN).

给定两个排序列表L1和L2,计算L1⋃L2的最快算法具有时间复杂度Θ(NlogN)。

T

F


1-7

分数 1

作者 李廷元单位 中国民用航空飞行学院

链表的每个结点都恰好有一个指针。

T

F


1-8

分数 1

作者 朱晓龙单位 西安邮电大学

对单链表来说,只有从头结点开始才能访问到表中所有结点。

T

F


2-1

分数 3

作者 严冰单位 浙大城市学院

线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。

A.必须是连续的

B.部分地址必须是连续的

C.一定是不连续的

D.连续或不连续都可以


2-2

分数 3

作者 严冰单位 浙大城市学院

对线性表,在下列情况下应当采用链表表示的是()。

A.经常需要随机地存取元素

B.经常需要进行插入和删除操作

C.表中元素需要占据一片连续的存储空间

D.表中的元素个数不变


2-3

分数 3

作者 严冰单位 浙大城市学院

在单链表中,要删除某一指定结点,必须先找到该结点的()。

A.直接前驱

B.自身位置

C.直接后继

D.直接后继的后继


2-4

分数 4

作者 严冰单位 浙大城市学院

在单链表中,指针p指向元素为x的结点,实现“删除x的后继”的语句是()。

A.p=p->next

B.p->next=p->next->next

C.p->next=p

D.p=p->next->next


2-5

分数 4

作者 严冰单位 浙大城市学院

已知线性表中的元素以值递增有序排列,阅读下列程序,该算法的功能是()。

typedef struct node{
ElemType data;
struct node *next;
}LNode;
void fun4(LNode *h, ElemType min, ElemType max) {
LNode *p=h, *q=NULL;
   while (p!=NULL && p->data<=min ) {
       q=p;  p=p->next;
   }
   while (p!=NULL && p->data<max ) {
       if (p==h) {
           h=p->next;  delete p;  p=h;
   }
       else {
           q->next=p->next;  delete p;  p=q->next;
}
   }
}

A.删除单链表中所有值小于min或大于max的元素

B.将单链表中值大于min的元素删除

C.将单链表中值小于max的元素删除

D.删除单链表中所有值大于min且小于max的元素


2-6

分数 4

作者 严冰单位 浙大城市学院

已知单链表中的元素以值递增有序排列,下列算法删除单链表中所有值相同的元素,同时释放被删结点空间。请将该算法补充完整。

typedef struct node{
ElemType data;
    struct node *next;
}LNode;
void delete_equal(LNode *h){
LNode *p=h, *q;
     if (h==NULL)  return;
    while (p->next!=NULL) {
        q=p->next;
        if (p->data!=q->data)
             p=q;
        else  //相邻两元素值相等,则循环删除后继等值结点
             while (q!=NULL && q->data==p->data) {
             __________________________
             }
    }
}

A.p->next=q->next; delete q;

B.q->next=p->next; delete q; q=p->next;

C.p->next=q->next; delete q; q= p->next;

D.p->next=q->next; delete q; q=p;


2-7

分数 4

作者 孔德桢单位 浙大城市学院

已知有如下C语言代码:

struct node {
    int val;
    struct node *next;
} p[3] = { 4, &p[2], 6, &p[0], 5, &p[1] };

其中值为6的表达式是:

A.p[1].next->val

B.(&p[0])->next->val

C.p[2].val

D.p[2].next->val


2-8

分数 2

作者 杨单位 浙大城市学院

下列哪一项不是普通单向链表设置了表头结点带来的好处。

A.统一了算法的实现,简化了链表操作;

B.表头位置的插入删除更加方便

C.表尾位置的插入删除更加方便

D.统一空表和非空表的处理


2-9

分数 2

作者 李廷元单位 中国民用航空飞行学院

单链表中,要将指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列中____是正确的。

A.q=p->next; p->next=q->next;

B.p->next=q->next; q=p->next;

C.q->next=p->next; p->next=q;

D.p->next=q; q->next=p->next;


2-10

分数 2

作者 高磊单位 西南石油大学

若某线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用( )存储方式最节省时间。

A.顺序表

B.单链表

C.双链表

D.单循环链表


2-11

分数 1

作者 zhangyong单位 浙大城市学院

对于单链表存储结构,以下说法中错误的是( )

A.一个节点的数据域用于存放线性表的一个数据元素

B.一个节点的指针域用于指向下一个数据元素的节点

C.单链表必须带有头节点

D.单链表中所有节点可以连续也可以不连续存放


4-1

分数 5

作者 李祥单位 湖北经济学院

顺序表 - 地址计算

假设顺序表第 1 个元素的内存地址是 100,每个元素占用 2 字节内存空间,则第 5 个元素的内存地址是

108。


4-2

分数 10

作者 张泳单位 浙大城市学院

下列函数用于将链表中各结点的数据依次输出。

struct student {
   long data;
     struct student *next;
};
void print(struct student *head)
{
   struct student *p ;
   p=head;
   if(head != NULL)
      do {
            printf("%ld\n”, p->data);
            p=p->next;
        } while (p!=NULL);
}


版权声明:本文为ohuojiuwo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。