线性表知识点及错题笔记:(整理自牛客网)
1、在线性表中,顺序存储元素逻辑相邻,物理也相邻;链式存储逻辑相邻,物理不一定相邻;
2、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用(顺序表)存储方式最节省时间。
(若是在中间删、插元素,链表比较省时。)
3、栈数据结构具有记忆功能,例如点A网页,A入栈,点B网页,B入栈,在B网页点后退,进入A,也就是B出栈,A为栈顶。
4、广义表即我们通常所说的列表(lists)。它放松了对表元素的原子性限制,允许他们有自身结构。(如表中有表)
如何求广义表的长度和深度?
长度:最外层包含元素的个数,即去掉最外层括号后含有的元素个数。
深度:表中含有括号数最多的括号层数加一。
如:E((a,(a,b),((a,b),c)))
其深度为:4
其广度为:1
5、栈和队列存储方式既可是顺序方式,也可是链式方式。
栈有顺序栈和链栈; 队列有链队列和循环队列。顺序栈和循环队列为顺序存储结构,链栈和链队列为链式存储 结构。
6、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用带头结点的双循环链表
存储方式最节省运算时间。
7、静态链表中指针表示的是 数组下标。
8、在有n个节点的二叉链表中,值为空的链域的个数为?
n个节点有2n个链域,n个节点只用n-1个指针链接,就跟3个点只用2跟线就能连起来一样。最后2n-(n-1)结果就是n+1。
9、从一个具有 n 个结点的单链表中查找其值等于 x 结点时,在查找成功的情况下,需平均比较( )个结点。
(1+2+3+...+n)/n=(n(n+1)/2)/n=(n+1)/2
10、对长度为无穷大的广义表,由于存储空间的限制,不能在计算机中实现;深度无穷大可以通过递归实现。
11、已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是 head(tail(head(tail(LS)))
head是取广义表的第一个元素(外层的括号去除),tail是取去掉第一个元素意外的所有尾部元素(注意外层的括号不能去除哦)
tail(LS)=((d,e,f)) //注意这里有两层括号,所以下面要用到head去掉外层的括号
head(tail(LS))=(d,e,f)
tail(head(tail(LS) )) = (e,f)
head(tail( head(tail(LS) ) )) = e
12、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 静态链表。