【问题标题】:Add Node function not working singly linked list python添加节点功能不起作用单链表python
【发布时间】:2019-03-03 17:16:26
【问题描述】:

我是一个菜鸟,努力理解和实现一个在尾部添加项目的单链表。我相信唯一不起作用的代码是 add 函数,我无法弄清楚它的逻辑。我相信我想将第一个节点设置为头部,然后在尾部插入其他元素,添加时将头部的指针更改为指向第 2 项,然后将第 2 项的指针指向第三个等等,但不知道如何进行编码(为了处理未知数量的字符串,为了简单起见,这里是 3。

strings = ["one", "two", "three"]


class Node:
    def __init__(self,data,nextNode=None):
        # populate the Node, with data and pointer
        self.data = data
        self.nextNode = nextNode

    def getData(self):
        # method to get value of this node
        return self.data

    def setData(self,val):
        # set value of node to val
        self.data = val

    def getNextNode(self):
        # get the pointer to the next node
        return self.nextNode

    def setNextNode(self,val):
        # set pointer to the next node
        self.nextNode = val

class LinkedList:

    def __init__(self, head = None, tail = None):
        # initial properties of linked list, size 0
        self.head = head
        self.tail = tail
        self.size = 0

    def getSize(self):
        # get size of linked list
        return self.size

    def addNode(self,data):
        # Head should point to first node, which will have a value, and a Null pointer
        if (self.size == 0):
            newNode = Node(data, self.tail)
            self.head.getNextNode() = newNode
        else:
        # All additional nodes should be inserted at tail, and with the pointers for the prior nodes changed to point to the new node
            newNode = Node(data, self.tail)
            self.tail = newNode
            self.size += 1
            return True

    def printNode(self):
        curr = self.head
        while curr:
            print(curr.data)#, curr.nextNode)
            curr = curr.getNextNode()

mylist = LinkedList()

for i in strings:
    mylist.addNode(i)

mylist.printNode()

# desired output: Head -> one --> two --> three/Tail

【问题讨论】:

    标签: python singly-linked-list


    【解决方案1】:

    有很多小错误,请在下面的代码中找到它们。如果您有不明白的地方,请告诉我。

    一个重要的变化是一个新节点不应该访问它的下一个节点。它已经是最后一个节点,所以它旁边不能有任何节点。也请密切关注elseaddNode 功能。

    strings = ["one", "two", "three","four","five"]
    
    class Node:
        def __init__(self,data):
            # populate the Node, with data and pointer
            self.data = data
            self.nextNode = None
    
        def getData(self):
            # method to get value of this node
            return self.data
    
        def setData(self,val):
            # set value of node to val
            self.data = val
    
        def getNextNode(self):
            # get the pointer to the next node
            return self.nextNode
    
        def setNextNode(self,val):
            # set pointer to the next node
            self.nextNode = val
    
    class LinkedList:
    
        def __init__(self, head = None, tail = None):
            # initial properties of linked list, size 0
            self.head = head
            self.tail = tail
            self.size = 0
    
        def getSize(self):
            # get size of linked list
            return self.size
    
        def addNode(self,data):
            # Head should point to first node, which will have a value, and a Null pointer
            if (self.size == 0):
                self.head = Node(data)
                self.tail = self.head
                self.size = 1
            else:
            # All additional nodes should be inserted at tail, and with the pointers for the prior nodes changed to point to the new node
                newNode = Node(data)
                self.tail.nextNode = newNode
                self.tail = newNode
                self.size += 1
                return True
    
        def printNode(self):
            curr = self.head
            while curr:
                print(curr.data)#, curr.nextNode)
                curr = curr.getNextNode()
    
    mylist = LinkedList()
    
    for i in strings:
        mylist.addNode(i)
    
    mylist.printNode()
    

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2021-03-30
      • 2017-04-12
      相关资源
      最近更新 更多