单向链表(Python)

以下为结点的定义:

class Node():
    def __init__(self,value,next = None):
        self.value = value
        self.next = next
length = 0                                      #链表的长度,规定只有一个头结点时长度为0

判断链表是否为空:

def IsEmpty():
    return length == 0

将结点Node插入到head之后:

def HeadInsert(head,node):  
    node.next = head.next
    head.next = node
    global length
    length += 1

将结点插入到链表尾:

def TailInsert(head,node):                         
    p = head
    while p.next != None:
        p = p.next
    p.next = node
    global length
    length += 1

给一个结点,将新结点插入到给定结点之前:

def NodeInsert(oNode,node):                  
    node.next = oNode.next
    oNode.next = node
    node.value,oNode.value = oNode.value,node.value
    global length
    length += 1

删除第index个结点:

def Delete(head,index):       
    global length
    if index <= 0 or index > length:
        print('index输错了。')
    else:
        p = head
        i = 1
        while i != index:
            p = p.next
            i += 1
        p.next = p.next.next
        length -= 1

快慢指针法找到链表的中间节点:

def FindMid(head): 
    f = head
    s = head
    index = 0
    while f.next != None and f.next.next != None:
        f = f.next.next
        s = s.next
        index += 1
    return index
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值