单向链表(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
posted @   epiphanyy  阅读(7)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示