python链表

链表的创建

函数里面的值赋予None是表示初始化,我们可以传入有效参数即可覆盖None。
链表头尾指针的本质就是 认对象!!!
把对象认了,就是不同链表之间的连接。

class Node:
    def __init__(self,item):
        self.item=item
        self.next=None #尾部指针初始化置空

链表的创建非常简单,只需要创建初始位置和下一节点的储存位置即可

链表的头插法

头插法,就是往链表的头部之中插入元素,只需要另新节点的next对应旧节点即可

def head_insert(list):
    head=Node(li[0]) #先初始化头节点,也是类的初始化
    for  i in  li[1:]:
         node=Node(i) #创建一个新的头节点,便于两个头节点连接
         node.next=head
         head=node
    return head #返回头节点
        

链表的尾插法

def tail_insert(li):
    head=Node(li[0])
    tail=head #刚开始头节点和尾节点相同位置	
    for  i in  li[1:]:
         node=Node(i)
         tail.next=node
         tail=node #把新节点赋予尾节点,(尾节点后移)
    return  tail #返回尾节点

链表的删除:

链表的删除涉及到两个间隔的链表元素的连接在这里插入代码片
1——2——3,删掉2,可以认为是1——3,即1的尾节点连接3的头节点
首先,3的头部连接1的尾部:
假设链表已经创建完毕

first.next=second.next #(second.next就是3,把3赋予2的位置)
del second

链表的增加:

即为 1——3 变为1——2——3
增加的过程,需要把3接到2的尾节点,把2接到1的尾节点
那么我们可以这样子:

second.next=first.next #3接上2的后面
first.next=second  #2接在1的后面

双向链表

双向链表包含头和尾,既需要设置头指针,也需要设置尾指针,也就是说,设定两个指向对象
比如: A ↔ B ↔ C A \leftrightarrow B \leftrightarrow C ABC
创建双向链表如下:

class train:
   def __init__(self,number):
      self.val=None #初始化头部指针
      self.next=None #初始化尾部指针
      self.number=number #初始化头节点的元素

现在开始双向链表的连接

lian1=train(li[0])
lian2=train(li[1])
lian3=train(li[2])
lian1.next=lian2 #lian2接在lian3的尾部
lian2.val=lian1 #lian1接在lian2的头部
lian2.next=lian3
lian3.val=lian2 

双向链表和单向链表的性质差不多,类比即可
双链表可以双向寻找数据

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值