python - 得到一个无类型错误的Python 3?

标签 python python-3.x oop error-handling

#Creates a new Node 
#nextnode acts as a pointer    
class Node(object):
        def __init__(self,data):
            self.data = data
            self.nextnode = None
    class LinkedList(object):
        def __init__(self):
            self.head = None
            self.size =0
    #Insertion
Adding elements at start and end of linked list

        def insertStart(self,data):
            self.size+=1
            newnode = Node(data)
            if not self.head:
                self.head = newnode
            else:
                newnode.nextnode = self.head
                self.head = newnode
        def size(self):
            return self.size



        def insertEnd(self,data):
            self.size+=1
            newnode = Node(data)
            actualnode = self.head
            while actualnode is not None:
                actualnode = actualnode.nextnode #Eroor here!!!!
            actualnode.nextnode = newnode

         #Traversing through linked list
        def traverse(self):
            actualnode = self.head
            while actualnode is not None:
                print("Actual Node {}".format(actualnode.data))
                actualnode = actualnode.nextnode

    #Removing node
        def remove(self,data):
            if (self.head == None):
                return
            currentnode = self.head
            previousnode = None
            while (currentnode.data != data):
                previousnode = currentnode
                currentnode = currentnode.nextnode
            if previousnode is None:
                self.head = currentnode.nextnode
            else:
                previousnode.nextnode = currentnode.nextnode

    linkedlist = LinkedList()
    linkedlist.insertStart(12)
    linkedlist.insertStart(13)
    linkedlist.insertStart(14)
    linkedlist.insertStart(15)
    linkedlist.insertEnd(16)
    linkedlist.traverse()

最佳答案

insertEnd中,您保证循环末尾始终有Noneactualnode:

def insertEnd(self, data):
    self.size += 1
    newnode = Node(data)
    actualnode = self.head

    # Keep going until actualnode is None
    while actualnode is not None:
        actualnode = actualnode.nextnode

    # Here actualnode will always be None
    actualnode.nextnode = newnode

要解决此问题,只需更改您的while循环条件:
while actualnode.nextnode is not None:
    actualnode = actualnode.nextnode

请注意,这假设self.head始终为非None。您可能应该明确检查这种情况。也许是这样的:
def insertEnd(self, data):
    self.size += 1
    newnode = Node(data)
    if self.head is None:
        self.head = newnode
    else:
        actualnode = self.head
        while actualnode.nextnode is not None:
            actualnode = actualnode.nextnode
        actualnode.nextnode = newnode

关于python - 得到一个无类型错误的Python 3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45334824/

相关文章:

python - 递归地从元组中删除元素

python-3.x - 在 python 中与子进程交互的最佳实践是什么

java - 需要有关 Java 设计模式的帮助

oop - 简洁的架构说明

r - 扩展 R S4 对象以具有新插槽并保持原始对象以相同方式工作

python - 如何使用 ndarray/模型预测替换列中的缺失值

python - 我需要帮助将列表转换为 pandas 数据框

javascript - Django 和使用模态窗口

ruby - 错误消息 "Xcode alone is not sufficient on Sierra"

javascript - Python Flask - 否 'Access-Control-Allow-Origin'