linkedlist
数组
优势:高效,每个元素访问时间是常数,这一特性叫随机访问
缺点:要申明初始化大小,很难去在任意位置插入或删除
linkedlist
定义:一种储存数据的形式
优点:过不同的节点储存一串数据,每个节点包含一个数据,同时包含指向下一个数据的链接,最后一个元素的链接为“NULL”。linkedlist可以无限延长,不需要提前声明大小,同时插入和取出元素很容易,只需要改变指向的链接就好。插入元素的复杂度为O(n)
缺点:1.不能随机访问2.储存要占据额外的储存空间,要额外储存指向节点的链接。
二者比较
内存
- array在内存空间占据连续的位置
- linkedlist不需要连续的位置。
linkedlist basic operation
$$
1.q
←
\leftarrow
← p这表示将节点p指向p
2.q
←
\leftarrow
← next of p 这个表示q 指向q的前一个结点
3.p
←
\leftarrow
← p\ 将 p指向p的下一个节点
4.next of q
←
\leftarrow
← p q的下一个指向p
5. next of q
←
\leftarrow
← next of p 将p的下一个设置为q的下一个
$$
递归(打印链表A的值)
traverse(A){
if(A=NULL)
return
else
print A.value
traverwe(A.next)
}
在链表中插入值
algorithm insertNode()
链表中删去值
search value
时间复杂度为O(N),空间复杂度为O(1).