#JC1035. 链表

链表

一、单项选择题(每题2分,共20分)

1、关于单向链表结点内存,下面说法正确的是?()。 {{ select(1) }}

  • 结点内存必须连续
  • 结点内存连续、不连续都可以
  • 结点内存一定不能连续
  • 所有结点必须存放在数组里面

2、单向链表的结点结构体struct node{int data; node *next;};,next成员的作用是?()。 {{ select(2) }}

  • 保存当前结点的数据
  • 保存上一个结点的地址
  • 保存下一个结点的地址
  • 保存链表结点总个数

3、链表最后一个结点的next指针应当赋值为?()。 {{ select(3) }}

  • 0
  • NULL
  • 首结点地址
  • 自身地址

4、已有结点指针node *p;,要读取当前结点存储的数据,写法正确的是?()。 {{ select(4) }}

  • p.data
  • p->data
  • *p.data
  • &p->data

5、遍历单向链表,循环终止条件正确的是?()。 {{ select(5) }}

  • while(p != NULL)
  • while(p == NULL)
  • while(next != NULL)
  • while(data != NULL)

6、在p指向的结点后面插入s结点,正确的两行代码顺序是?()。 {{ select(6) }}

  • p->next=s; s->next=p->next;
  • s->next=p->next; p->next=s;
  • s->next=p; p->next=s;
  • p->next=s; s->next=p;

7、删除p指针所指向结点的后继结点,正确代码是?()。 {{ select(7) }}

  • p = p->next->next;
  • p->next = p->next->next;
  • p->next = NULL;
  • p->next->next = p;

8、删除链表的头结点时,需要做什么特殊处理?()。 {{ select(8) }}

  • 不需要任何操作
  • 更新头指针head,指向新的第一个结点
  • 直接把head赋值为NULL即可
  • 必须遍历整个链表

9、下面关于.与->运算符描述正确的是?()。 {{ select(9) }}

  • 结构体变量用->,结构体指针用.
  • 结构体变量用.,结构体指针用->
  • 两者完全没有区别,可以随意混用
  • 链表只能使用.运算符

10、单向链表想要找到指定结点,应当如何操作?()。 {{ select(10) }}

  • 可以随机直接访问任意结点
  • 必须从链表头部开始向后遍历查找
  • 可以从尾部向前倒着查找
  • 通过data值直接跳转访问

二、判断题(每题2分,共10分)

11、单向链表结点由存储数据的data成员、存后继地址的next指针两部分组成。() {{ select(11) }}

  • 正确
  • 错误

12、链表中间插入新结点时,可以先执行p->next=s;,再执行s->next=p->next;,不会丢失链表。() {{ select(12) }}

  • 正确
  • 错误

13、链表遍历指针p=p->next;作用是让指针移动到下一个结点。() {{ select(13) }}

  • 正确
  • 错误

14、删除链表中间结点的时候,必须修改头指针head的值。() {{ select(14) }}

  • 正确
  • 错误

15、单向链表只能顺着next向后访问结点,不能直接回到前面的结点。() {{ select(15) }}

  • 正确
  • 错误