线性表的链式存储结构:链表
数组可以实现随机访问,和随机存储,简称随机存取的存储结构
链表必须按照顺序从头节点开始寻找,简称顺序存取的存储结构
索引存取的存储结构:Map,节点维护一个索引表,按照索引来进行存取
线性表是逻辑结构,而数组和链表是线性表的两种实现,是存储结构(具体实现)
二叉树的顺序存储结构:将二叉树当做一个完全二叉树,或者满二叉树,按照层次遍历的方式将二叉树存储在数组中,对于二叉树中的空节点,使用某种空标志来替代,浪费大量空间
逻辑上相邻的,物理存储不一定相邻
栈和队列就具有查找操作
D选项有问题
单链表,单向循环链表,双向链表,都是O(n)
数据项构成了数据元素
循环单链表的最后一个元素的指针指向头结点,如果循环单链表只设头指针,那么如果需要找到尾节点进行操作,需要遍历整个链表
循环链表的尾指针,只要next一下,就是头结点,所以,如果只是对最后一个元素和第一个元素进行操作,可以使用仅有头指针的单循环链表,这样,如果对最后一个元素进行操作(删除),只需要直接使用尾指针进行操作,而如果需要对头指针进行操作(插入),仅仅需要将尾指针next一线即可
链表中的指针不是指向数据元素的,而是指向包装了数据元素和指针的节点的,所以,属于之间的关系是通过指针来实现的,而不是通过指示数据元素的指针来实现的
静态链表是借助数组来描述线性表的链式存储结构,结点也有数据域和指针域,与链表中的指针不同的是,这里的指针是节点的相对地址(数组下标,也成为游标),静态链表在使用前也需要分配一块连续的内存空间
适用于不支持指针的语言中
(1/(n+1)) * (n(n+1)/2) == n/2
1,不含任何元素,只有一个头结点,则head->next->next->next还是head
2,含有两个元素
单链表默认为只有头指针,那么需要将长度为m的链表的头指针,移动到链表的尾部,也就是需要O(m)的时间复杂度