数据结构-简单的链表结构

数据结构–链表

2016/6/1 20:09:05 SeventeenWen

链表分为两部分:

  • 数据部分:存储数据的地方
  • 地址部分:保存的是下一个节点的地址

链表只是逻辑上相连,实际内存上是不相连的

单向链表

链表的添加
  1. 分配内存空间,没有任何值。
  2. 给要添加的节点赋值。将空值赋给节点的指针域。
  3. 将前一个节点的指针指向添加的节点
链表的插入
  1. 分配一块内存空间,没有任何值。
  2. 给链表的保存数据值的域赋值。
  3. 找到要插入的逻辑位置,就是找到要插入的地方。
  4. 修改指针指向的位置。
链表的删除

链表删除操作包括删除表头和返回数据,有几种可能

1.删除头节点(O(1))

  • 第一个节点的数据暂存在成员变量中
  • 指针Head指向第二个节点
  • 第一个节点等待GC的回收

2.删除尾节点(O(n))

  • 删除尾节点的数据。
  • 调整指针位置,直接向后移动是不可能的,使用for循环从开始查找尾节点的指针位置。
  • 尾节点等待GC回收

3.删除任意节点

  • for循环整个链表,找到要删除节点的位置。
  • 再次for循环整个链表,找到要删除节点的前一个节点,是前一节点指向当前节点的下一节点。
  • 删除节点

  • 使用两个指针,一个指向第一个节点,一个指向第二个节点,

  • for循环,使两个指针都指向下一个节点,循环结束条件第二个指针指向了要删除的节点。
  • 第一个节点指向第二个节点指向的下一个。
  • 要删除的节点等待GC回收

双向链表

定义:双向链表有两个指针域,一个指向前一个,一个指向后一个。

添加节点

  • 初始化链表的三个域。
  • 给节点赋值。
  • 指向下一个域的指针置空。
  • 给定指向上一个域的指针
  • 尾指针指向新节点
  • 前驱节点指向新节点

删除节点

找到要删除的节点,将指向它的上一个节点的指针域的值指向删除节点的下一个节点,隔离要删除的节点。等待GC回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值