重学数据结构——链表

相对于线性表的顺序存储结构,不连续的存储结构就是链表了,针对链表,有以下几个注意点:

  • 链表的存储空间不一定连续
  • 对链表中的节点进行访问与位置有关,时间复杂度为O(n)
  • 链表的插入与删除与位置无关,时间复杂度为O(1)
  • 链表分为单链表,双向链表,静态链表,循环列表这几种基本形式。

单链表是由许多节点组成的,节点存储结构很简单,分为数据域与指针域。简单可以将其记为:节点=数据+指针,链表=(头节点)+n个节点。

我们还可以单独定义一个头节点,来消除对插入位置的判断,并且头节点中也可以定义一个int型数据,来存储链表的元素的长度。

线性表的操作无论存储结构如何,操作均为相同的,均分为

  • 创建链表
  • 在位置i插入节点
  • 删除位置i节点
  • 得到位置i的节点数据
  • 销毁链表

与顺序存储结构不同的是,在插入节点时,少了对于存储空间的判断,插入节点分为有头节点和无头节点。

有头节点时,在表头插入元素与表中插入元素操作相同,操作如下:

  • 判断插入位置是否合理
  • 生成节点
  • 找到位置i的前一位节点
  • 先连后,后连前
  • 表长+1

 

posted on 2013-07-12 21:28  叶刀刀  阅读(156)  评论(0编辑  收藏  举报

导航