提问:怎么用python实现链表

看了理论描述之后写不出东西。请大佬们帮帮我用python表达一下一下这个链表谢谢:1→2→4

参考一下:https://blog.csdn.net/qq_39422642/article/details/78988976

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢

这个程序实现了创建 插入 删除等功能

#-*- coding:utf-8 _*
"""
@author: YAOTIANLONG
@file: Linklist.py
@time: 2019/10/22
"""
class ListNode:
    """单链表结点"""
    def __init__(self, data, next=None):
        self.data = data
        self.next = next


class LinkList:
    """
    单链表基本操作:
        - 创建链表
        - 打印链表
        - 链表总长度
        - 判断链表是否为空
        - 在链表末尾追加元素item
        - 在index位置前插入元素item
        - 删除index位置上的元素
    """
    def __init__(self):
        self.head = None  # self.head为头结点

    def create(self, data):
        """
        创建链表
        :param data: list, 如:[1,2,3]
        :return:
        """
        if not isinstance(data, list) or len(data) == 0:  # 特殊判断:不是列表或者列表为空,退出程序
            return
        self.head = ListNode(data[0])  # 创建头结点
        p = self.head  # 指针p指向头结点,p的类型为None
        for i in data[1:]:  # 在头结点后边依次插入列表剩余结点
            p.next = ListNode(i)
            p = p.next

    def print(self):
        """
        打印链表,以空格分隔,末尾换行
        :return:
        """
        p = self.head
        while p:  # 遍历链表,打印结点值
            print(p.data, end=" ")
            p = p.next
        print()

    def len(self):
        """
        链表长度
        :return: len
        """
        p = self.head
        len = 0
        while p:  # 遍历链表,统计结点个数
            len += 1
            p = p.next
        return len

    def is_empty(self):
        """
        判断链表是否为空
        :return: True or False
        """
        return True if self.len() == 0 else False

    def append(self, item):
        """
        在链表末尾追加元素, 如:[1,2,3] =>append(4)=> [1,2,3,4]
        :param item: 追加元素的值
        :return:
        """
        p = self.head
        while p.next:
            p = p.next  # 找到末尾位置
        p.next = ListNode(item)  # 插入元素

    def insert(self, index, item):
        """
        在链表index位置之前插入元素item, 如:[1,2,3] =>insert(1,4)=> [1,4,2,3]
        :param index: 索引,从0开始
        :param item:  元素的值
        :return:
        """
        if index > self.len() or index < 0:  # 特殊判断,不在列表范围,退出程序
            return
        if index == 0:  # 在第一个位置插入
            self.head = ListNode(item, self.head)
            return
        p = self.head
        n = 0
        while n < (index-1):
            p = p.next
            n += 1  # 找到插入位置
        if index == self.len():
            p.next = ListNode(item)  # 在最后一个位置插入
        else:
            p.next = ListNode(item, p.next)  # 在中间位置插入

    def delete(self, index):
        """
        删除链表index位置上的元素, 如:[1,2,3] =>delete(1)=> [1,3]
        :param index: 索引,从0开始
        :return:
        """
        if index > self.len() or index < 0:  # 特殊判断,不在列表范围,退出程序
            return
        if index == 0:  # 在第一个位置插入
            self.head = self.head.next  # 跳过,删除元素
        else:
            p = self.head
            n = 0
            while n < (index-1):
                p = p.next
                n += 1  # 找到删除位置
            p.next = p.next.next  # 删除元素


if __name__ == "__main__":
    a = LinkList()
    a.create([1, 2, 4])
    a.print()
    print("len:", a.len())
    print("head data:", a.head.data)
    print("LinkList Not None" if not a.is_empty() else "LinkList is None")
    a.append(20)
    a.print()
    a.insert(0, 30)
    a.print()
    a.delete(a.len()-1)
    a.print()

img