#JC1054. 链表进阶
链表进阶
一、单项选择题(每题2分,共20分)
1、单链表结点结构体中,next指针存放的是?() {{ select(1) }}
- 本结点的数据值
- 下一个结点的地址
- 上一个结点的地址
- 链表头结点地址
2、C++结构体指针访问成员使用哪个运算符?() {{ select(2) }}
.->*&
3、双向链表结点,用来保存前驱结点地址的指针名称是?() {{ select(3) }}
- next
- data
- prev
- head
4、单链表中间位置插入新结点s,p指向插入位置的前一个结点,正确操作顺序是?() {{ select(4) }}
- s->next = p->next; p->next = s;
- p->next = s; s->next = p->next;
- s = p; p->next = s;
- p->next = s; p = s;
5、双向链表,在p指向的结点之后插入s结点,下面正确一组操作是?() {{ select(5) }}
- s->next = p->next; p->next->prev = s; s->prev = p; p->next = s;
- p->next = s; s->prev = p; s->next = p->next; p->next->prev = s;
- s->prev=p; p->next=s; s->next=p->next; p->next->prev=s;
- p->next->prev=s; s->next=p->next; p->next=s; s->prev=p;
6、双向链表删除p指向的中间结点(前后结点都不为空),正确操作是?() {{ select(6) }}
- p->prev->next = p->next; p->next->prev = p->prev;
- p->next = NULL; p->prev = NULL;
- delete p;
- head = p->next;
7、C++中动态开辟结点内存使用哪个关键字?() {{ select(7) }}
- static
- new
- delete
- struct
8、动态创建单链表,将新结点s插入到链表头部,newNode为新结点,head为头指针,正确代码是?() {{ select(8) }}
- newNode->next = head; head = newNode;
- head->next = newNode;
- newNode = head; head->next = NULL;
- head = newNode; newNode->next = NULL;
9、双向链表想要倒序遍历输出全部数据,遍历指针p初始应该指向哪里?() {{ select(9) }}
- head(首结点)
- NULL
- 尾结点tail
- 任意中间结点
10、相比于数组,链表做频繁插入、删除操作的主要优势是?() {{ select(10) }}
- 随机下标访问速度更快
- 只修改相邻指针,不需要大量移动数据
- 占用内存一定比数组小
- 代码写法更简单
二、判断题(每题2分,共10分)
11、单链表结点内存地址在内存中一定是连续的。() {{ select(11) }}
- 正确
- 错误
12、双向链表每个结点同时拥有next后继指针和prev前驱指针。() {{ select(12) }}
- 正确
- 错误
13、.点运算符用于结构体普通变量访问成员;->用于结构体指针访问成员。()
{{ select(13) }}
- 正确
- 错误
14、双向链表中间插入结点时,可以先修改p‑>prev,再读取p‑>prev‑>next,不会出现逻辑错误。() {{ select(14) }}
- 正确
- 错误
15、静态创建链表:程序运行过程中使用new运算符动态申请结点。() {{ select(15) }}
- 正确
- 错误