您的位置:首页 > 理论基础 > 数据结构算法

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

2016-06-02 22:08 211 查看

数据结构–链表

2016/6/1 20:09:05 SeventeenWen

链表分为两部分:

数据部分:存储数据的地方

地址部分:保存的是下一个节点的地址

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

单向链表

链表的添加

分配内存空间,没有任何值。

给要添加的节点赋值。将空值赋给节点的指针域。

将前一个节点的指针指向添加的节点

链表的插入

分配一块内存空间,没有任何值。

给链表的保存数据值的域赋值。

找到要插入的逻辑位置,就是找到要插入的地方。

修改指针指向的位置。

链表的删除

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

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

第一个节点的数据暂存在成员变量中

指针Head指向第二个节点

第一个节点等待GC的回收

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

删除尾节点的数据。

调整指针位置,直接向后移动是不可能的,使用for循环从开始查找尾节点的指针位置。

尾节点等待GC回收

3.删除任意节点

for循环整个链表,找到要删除节点的位置。

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

删除节点

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

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

第一个节点指向第二个节点指向的下一个。

要删除的节点等待GC回收

双向链表

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

添加节点

初始化链表的三个域。

给节点赋值。

指向下一个域的指针置空。

给定指向上一个域的指针

尾指针指向新节点

前驱节点指向新节点

删除节点

找到要删除的节点,将指向它的上一个节点的指针域的值指向删除节点的下一个节点,隔离要删除的节点。等待GC回收
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: