私はlist.append()操作をPythonで記述しようとしています。私はリンクされたリストを実装し、それは正常に動作します。しかし、私は最後のデータ項目を印刷することはありません。リストのすべての項目を印刷しようとすると、最後の部分を除いて、ノード内のすべてのデータ値が表示されます。値の代わりに「なし」が表示されます。私は、新しく追加されたノードで次のポインタを 'None'に割り当てる際に間違いを犯しています。固定に役立つ必要があります。リンクリストにPythonで追加機能を実装する
ノードクラスとリストクラスの実装。
class Node:
def __init__(self,item):
self.data = item
self.next = None
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self,newItem):
self.data = newItem
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,item):
temp = Node(item)
temp.setNext(self.head)
self.head = temp
def size(self):
count = 0
current = self.head
while current != None:
count = count + 1
current = current.getNext()
def append(self, item):
current = self.head
isEnd = False
newItem = Node(item)
while not isEnd:
if current.getNext() == None:
isEnd = True
else:
current = current.getNext()
current = current.setNext(newItem)
newItem = current.getNext()
def printList(self):
current = self.head
isEnd = False
while not isEnd:
if current.getNext() == None:
isEnd = True
else:
print current.getData()
current = current.getNext()
私はオブジェクトを作成し、値を渡します。
mylist = UnorderedList()
mylist.add(31)
mylist.add(77)
mylist.add(17)
mylist.add(93)
mylist.add(26)
mylist.add(54)
print(mylist.size())
mylist.append(12)
print(mylist.size())
mylist.append(15)
print(mylist.size())
print('\n')
print mylist.printList()
出力は次のとおりです。
6
7
8
54
26
93
17
77
31
12
None
: 私もあなたの追記機能を変更していました。あなたが投稿したコードでその出力を得ることは可能ではないと思います。 'UnorderedList.append'では、' Node.setNext'が返り値を持たないため、 'current = current.setNext(newItem)'は 'current''を' None'にします。次の行である 'newItem = current.getNext()'は 'None.getNext'(' AttributeError')を試みます。 – Galen
printlist()のifテストを 'if current == None:'に変更すると動作すると思います。 –