Python-链表-附加 [英] Python - Linked List - Append

查看:44
本文介绍了Python-链表-附加的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试学习python中的链接列表,我已经获得了链接列表类,并被要求创建append方法.

I'm trying to learn Linked Lists in python I've been given Linked List class and asked to create append method.

这里是提供的代码.

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

class LinkedList:
    def __init__(self):
        self.head = None

    def add(self, item):
        self.head = Node(item, self.head)

    def remove(self):
        if self.is_empty():
            return None
        else:
            item = self.head.item
            self.head = self.head.next
            return item

    def is_empty(self):
        return self.head == None

    def __str__(self):
        tmp_str = ""
        ptr = self.head
        while ptr != None:
            tmp_str += ptr.item + " "
            ptr = ptr.next

        return tmp_str

这是我的append方法,但是有问题.我知道如果链接列表为空,我必须创建一个,当内部有元素时问题就开始了.

Here is my append method but there is something wrong with it. I know if the Linked list is empty I have to create one, problem starts when there's elements inside.

def append(self, item):
    ptr = self.head
    if ptr:
        while ptr != None:
            ptr = ptr.next
        ptr = Node(item, ptr)
    else:
        self.head = Node(item, self.head)

任何人都可以告诉我我做错了什么吗?非常感谢您的帮助.

Anyone can tell me what did I do wrong please? Any help is much appreciated.

推荐答案

进行两项检查-第一项检查 self.head 是否已初始化.第二个应该遍历列表,直到找到最后一个节点.确保您不超出界限,否则将无法将最后一个节点链接到 new 最后一个节点.

Make two checks - the first checks whether self.head has been initialised. The second should traverse the list until it finds the last node. Ensure you don't overstep your boundaries, or else you won't be able to link the last node to the new last node.

def append(self, item):
    if not self.head:
        self.head = Node(item, self.head)
    else:
        ptr = self.head
        while ptr.next:                    # traverse until ptr.next is None
            ptr = ptr.next
        ptr.next = Node(item, ptr.next)    # initialise ptr.next

这篇关于Python-链表-附加的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆