链表
一.链表的分类
按连接方向分类:
单链表
双链表按照有环无环分类:
普通链表
循环链表:首尾相接的链表按照存储结构方式分类:
静态链表:内存已分配,长度已经确定,地址是连续的,类似于数组的实现方式,但是插入、删除不移动元素,仅修改指针。
动态链表:内存动态分配,存储地址不连续。链表在长度上没有限制。
二.链表问题代码实现的关键:
- 链表调整函数的返回值类型
- 链表问题对于边界问题的讨论要严格。
邻接表:
错题整理:
- 循环链表不是线性表,这样的说法错误。
解答:
- 线性表是n个元素的有限序列,是线性结构的,线性结构中的元素具有单一的前驱和后继;
- 循环聊表是线性表基础上库长得线性结构,可以从任何一个元素遍历整个表。
2.下列数据结构具备记忆功能的是:
A.队列
B.循环列表
C.栈
D.顺序表
3.判断:F=(a,F)是一个递归的广义表,它的深度是一,长度是2。
- 广义表是由n个元素组成的序列
- 广义表的深度:广义表中最大层数叫做广义表的深度。体重深度为无穷大。
- 广义表的head运算和tail运算。head运算取广义表的第一个元素,不管他是原子元素还是广义表;广义表中除了第一个元素之外其他元素都是尾元素。tail运算就是取广义表的尾元素。
4.hashmap的数据结构是怎样的?
A.数组
B.链表
C.数组+链表
D.二叉树
5.下面数据结构说法正确的是:
A数组和链表都可以随机访问
B数组的插入和删除可以是O(1)
C哈希表没有办法做范围检查
解答:在数组的末尾删除和插入为O(1),选项为可以,所以未正确选项。
6.若某线性表最常用的操作是存取任意指定序号的元素和在最后进行插入和删除操作运算,则利用()存储方式最节省时间。
A.顺序表
B.双链表
C.带头结点的双循环链表
D.单循环链表
解答:
存取任意指定序号的和可以在最后进行插入和删除最好的数据结构是顺序表。
7.在一个以h为头指针的单循环链表中,p指针指向链尾节点的条件是:
A.p-next=NULL
b.p-next=h
c.p-next-next=h
d.p-data==-1
解答:正确答案选b