Python链表错误代码

时间:2013-09-17 10:42:50

标签: python list python-3.x linked-list

我的代码有些问题。它说str没有属性top ..这个程序的意思是使用链表,每当我尝试在put中放置一些值时,我会收到一些错误..

class LinkedQ(object):
    def __init__(self):
        self.top = None

    def __str__(self):
            s = ""
            p = self.first
            while p != None:
                s = s + str(p.value)
                p = p.next
            return s

    def put(self):
        ny = Node(x)
        ny.next = self.top
        self.top = ny

    def get(self):
        x = self.top.value
        self.top = self.top.next
        return x

    def isEmpty(self):
        if self.top == None: 
            return True
        else:
            return False

class Node:
   def __init__(self, x):
      self.value = x
      self.next = None

row = input("Write line of numbers (1 2 3 4): ")
row_pi = row.split()
for i in row_pi:
      LinkedQ.put(i)

1 个答案:

答案 0 :(得分:2)

您的put方法不会使用x参数,但会尝试在其正文中使用本地变量x。据推测,您的意思是使用您在代码的最后一行传递给方法的值,这意味着您的方法应该具有签名:

def put(self, x):

然而,还有另一个问题。您正尝试在

上调用该方法
LinkedQ.put(i)

当它是实例方法时。在调用其实例方法之前,需要实例化该类的对象:

some_linked_q = LinkedQ()
for i in row_pi:
    some_linked_q.put(i)

您在其他地方还有其他一些问题,但这至少可以解决您在问题中提到的错误。 (查找您没有在任何地方定义的变量......)