用Python实现链表

2024-06-24 13:17:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我不明白为什么下面的代码不能工作。当我向LinkedList追加内容时,它仍然会返回true,因为isEmpty()和printList()不会打印任何内容。很明显我搞错了推荐信,但我一辈子都搞不清楚我在哪里搞错了。如果你也能指出我的设计有什么问题那就太好了。

class Node(object):

    def __init__(self, data, next=None):

        self.data = data
        self.next = next

    def __str__(self):
        return str(self.data)



class LinkedList(object):



    def __init__(self):

        self.head = None
        self.size = 0


    def append(self, *data):

            n = self.head
            #new_node = Node(data)

            if self.head is None:

                n = self.head

                for elem in data:
                    n = Node(elem)
                    n = n.next
                    self.size += 1

            else:

                n = self.head
                while n.next != None:
                    n = n.next

                for elem in data:
                    n.next = Node(elem)
                    n = n.next
                    self.size += 1




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

    def printList(self):

        n = self.head

        while n is not None:
            print str(n)

Tags: selfnonenode内容datasizeisdef
3条回答
class Node:
    def __init__(self):
        self.data = None
        self.nextNode = None

    def set_and_return_Next(self):
        self.nextNode = Node()
        return self.nextNode

    def getNext(self):
        return self.nextNode

    def getData(self):
        return self.data

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

class LinkedList:
    def buildList(self, array):
        self.head = Node()
        self.head.setData(array[0])
        self.temp = self.head
        for i in array[1:]:
            self.temp = self.temp.set_and_return_Next()
            self.temp.setData(i)
            self.tail = self.temp
        return self.head
    def printList(self):
        tempNode = self.head
        while(tempNode!=self.tail):
            print(tempNode.getData())
            tempNode = tempNode.getNext()
        print(self.tail.getData())
myArray = [3, 5, 4, 6, 2, 6, 7, 8, 9, 10, 21]

myList = LinkedList()
myList.buildList(myArray)
myList.printList()

简化了代码,一次只添加一个元素。

class Node(object):

    def __init__(self, data, next=None):

        self.data = data
        self.next = next

    def __str__(self):
        return str(self.data)



class LinkedList(object):



    def __init__(self):

        self.head = None
        self.size = 0


    def append(self, data):
            if not self.head:
                n = Node(data)
                self.head = n
                return
            else:
                n = self.head

                while n.next != None:
                    n = n.next

                new_node = Node(data)
                n.next = new_node;
                return


    def isEmpty(self):
        return not self.head

    def printList(self):
        n = self.head

        while n:
            print str(n)
            n = n.next

ll = LinkedList()
elems = [1, 2, 3, 54, 6]
for elem in elems:
    ll.append(elem)

ll.printList()

输出:

>>> 
1
2
3
54
6
class LinkedList(object):
   def __init__(self,data,none):
      self.data=data
      self.none=none

  def insert(self):

相关问题 更多 >