单链表结构表现出和数组不同的时间和空间权衡。
下表为单链表结构的运行时间:
操作 | 运行时间 |
在第i个位置访问 | O(n),平均情况 |
在第i个位置替换 | O(n),平均情况 |
在开始处插入 | O(1),最好情况和最差情况 |
在开始处删除 | O(1),最好情况和最差情况 |
在第i个位置插入 | O(n),平均情况 |
在第i个位置删除 | O(n),平均情况 |
单链表结构相对于数组的主要优点并不是时间性能,而是内存性能。当必须调整数组的大小的时候,其时间和内存都是线性的。当调整链表结构的大小的时候(这在每次插入或删除的时候都会发生),其时间和内存都是常数的。此外,在链表结构中没有浪费内存的问题。链表结构的物理大小不会超过其逻辑大小。链表结构确实有一个额外的内存代价,因为单链表结构必须要为指针使用m个内存单元格。这个代价在双链表中更是变本加厉,因为双链表的节点有两个链接。
结束!