链表也是一种线性表数据结构,与数组不同在于,逻辑上连续,物理空间不连续。链表结构五花八门,重点介绍三种常见的链表结构:单链表,双向链表,循环链表,
1,单链表
和数组相比,如何做到将零散的内存块串联起来?链表由结点组成,结点由data和next内存块组成。next存储着下一个结点的地址。
插入结点
删除结点
复杂度分析
插入删除操作O(1)
对比数组,虽然插入和删除操作高效,但是链表不能随机访问,而是需要根据指针一个节点一个节点地依次遍历,直到找到相应的节点。时间复杂度为O(n)。
而且,插入删除操作之前往往也要查找节点,那么其复杂度也为O(n)。有什么方法优化单链表吗?
2,循环链表
有了单链表的基础