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

数据结构 —— 链表总结

2016-05-25 18:19 405 查看
链表边界的问题只需牢记一点,执行 p->next 的时候要判断 p 是否为 NULL(至少有一个节点),自然执行 p->next->next 的时候要判断 p->next 是否为NULL(至少有两个节点)。

基本知识

尾部插入改变的是最后一个节点的next

尾部删除改变的是倒数第二个节点的next,需考虑如下的三种情况

空表

表中只有一个节点

一般的表

class LNode:
def __init__(elem, next_=None):
self.elem = elem
self.next = next_

class LList:
def __init__(self):
self._head = None


链表变体

(1)持有尾部节点的单链表

class LList1(LList):
def __init__(self):
LList.__init__(self)
self._rear = None


(2)循环单链表

class LCList:
def __init__(self):
self._rear = None


在链表对象里记录表尾节点更为合适,同时支持 O(1) 的时间进行头插、头删以及尾插。

循环链表的尾插其实就是执行一次头插,再移动尾部指针的位置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: