在python的链表中的第N个位置插入一个节点

阿尔伯特

我正在尝试在链接列表的位置“索引”中插入节点“项目”,我有以下代码,对我来说听起来不错,但无法正常工作。

如果有人可以帮助我,我将不胜感激。

class Node:
    def __init__(self,initdata):
        self.data = initdata
        self.next = None

    def getData(self):
        return self.data

    def getNext(self):
        return self.next

    def setData(self,newdata):
        self.data = newdata

    def setNext(self,newnext):
        self.next = newnext

然后我有:

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

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

    def add(self,newdata):
        Temp = Node(newdata)
        #         What happens here: the Temp.Next is going to connect to the place that head is connected to
        Temp.setNext(self.head)
        self.head = Temp


    def printl(self):
        current = self.head
        i=""
        while current.getNext() != None:
            i =i+ "-"+str(current.getData())
            current= current.getNext()
        i =i+ "-"+str(current.getData())
        return i

    def insert(self,item,index):
        current = self.head
        counter = 0
        Temp = Node(item)

        Prev = None

        if index == 0:
            Temp.setNext(self.head)
            self.head = Temp
        else:
            while counter < index:
                Prev = current
                current = current.getNext()
                counter = counter + 1

                Temp.setNext(Prev.getNext())
                Prev.setNext(Temp.getNext())
                current.setData = Temp

所以在这里我做一些测试:

mylist = UnorderedList()
mylist.insert(54,0)
mylist.add(31)
mylist.add(77)
mylist.add(17)
mylist.add(93)
mylist.add(26)
print(mylist.printl())
mylist.insert(12,2)
print(mylist.printl())

输出为:

-26-93-17-77-31-54
-26-93-17-77-31-54

如您所见,该节点未添加。您能否告诉我我的代码有什么问题以及如何解决?

和路易斯

insert函数上,它应该是Prev.setNext(Temp),上一个“下一个”必须是要插入的一个,而不是下一个:

    def insert(self,item,index):
        current = self.head
        counter = 0
        Temp = Node(item)

        Prev = None

        if index == 0:
            Temp.setNext(self.head)
            self.head = Temp
        else:
            while counter < index:
                Prev = current
                current = current.getNext()
                counter = counter + 1

            Temp.setNext(Prev.getNext())
            Prev.setNext(Temp)
            current.setData = Temp

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在链表的第n个位置插入一个节点

使用C在双向链接列表中的第N个位置插入一个节点

删除C++链表中第n个位置的节点------最后一个数字没有被删除

在第n个位置插入链表元素

如何使用自定义方法在链表的第0个位置插入节点?

在链表的第n个位置插入节点(无法理解我的代码)

链表在排序链表中插入一个节点

从第n个位置的链表中删除节点的功能,给出分段错误

在哈希中的某个位置插入一个条目

每隔n个位置将列表中的项目插入另一个列表

将一个数字插入到已排序的链表中,为什么每次都将数字插入到第二个位置?

将链表中的某个节点向前移动 n 个位置

尝试在某个位置之后的单向链表中插入节点,但它在之前插入

插入链表中总是返回最后一个节点,而不是当前节点

在给定节点之后在双向链表中插入一个节点

使用JavaScript在第n个位置分割一个字符串?

在第N个位置替换一个字符

从python中的列表中删除一个位置到另一个位置元素

在第n个位置插入元素

从堆栈的顶部插入第N个位置

递归地在链表末尾插入一个节点

计算python中两个列表中第n个位置元素的平均值

用xml中的多个位置替换一个子节点值

TinyXML插入到最后一个位置。

无法插入数组列表的最后一个位置

在 Python 上所需的位置链表中插入特定节点

如何在类似结构的链表中插入新节点?另一个

将向量插入另一个向量中的某个位置

我想在一个位置的向量中插入多个值