python数据结构与算法之链表

python数据结构与算法之链表

在这里插入图片描述

创建链表

在这里插入图片描述

头插法、尾插法

class Node:
    def __init__(self, item):
        self.item = item
        self.next = None


# 头插法
def create_linklist_head(li):
    head = Node(li[0])
    for element in li[1:]:  # li[0]作为头节点,故从li[1]开始
        node = Node(element)
        node.next = head  # 新插入的元素下一个指向原来的头
        head = node  # 链表的头移向新插入的元素
    return head


# 尾插法
def create_linklist_tail(li):
    head = Node(li[0])
    tail = head
    for element in li[1:]:
        node = Node(element)  # 创建节点
        tail.next = node  # 上一个节点的尾指向下一个
        tail = node  # 指针移到下一个节点
    return head


def print_linklist(lk):
    while lk:
        print(lk.item, end=',')
        lk = lk.next


lk1 = create_linklist_head([1, 2, 3])
print(print_linklist(lk1))
lk2 = create_linklist_tail([4, 5, 6])
print(print_linklist(lk2))

链表节点的插入(插入p)

注意:一定是先将4与2相连再将1与4相连 ,否则1先与4相连会使2之后的链表在内存消失
在这里插入图片描述

链表节点的删除(删除p)

p = curNode.next
curNode.next = curNode.next.next(即p.next)
del p (可忽略,因为上一步已经将p分离出了链表)
在这里插入图片描述

双链表

在这里插入图片描述

双链表节点的插入(插入p)

在这里插入图片描述

双链表节点的删除(删除p)

注意先将p与后面的链表连起来
在这里插入图片描述

链表的小优点

在这里插入图片描述

参考视频:清华计算机博士带你学习python算法+数据结构

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SimpleZihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值