#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) }}
- 正确
- 错误