这是链表代码中的简单交换节点
__author__ = 'kingsley'
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class LinkedList:
def __init__(self, head):
self.head = None
def add( self, data ) :
node = ListNode( data )
if self.head == None :
self.head = node
else :
node.next = self.head
node.next.prev = node
self.head = node
def Print(self):
temp = self.head
while temp is not None:
print(temp.val, end=' ')
temp = temp.next
class Solution:
# @param {ListNode} head
# @return {ListNode}
def swapPairs(self, head):
if head == None or head.next == None:
return head
dummy = ListNode(0)
dummy.next = head
p = dummy
while p.next and p.next.next:
tmp = p.next.next
p.next.next = tmp.next
tmp.next = p.next
p.next = tmp
p = p.next.next
def Print(self, head):
tmp = self.head
while tmp is not None:
print(tmp.val)
tmp = tmp.next
if __name__ == '__main__':
list = LinkedList(None)
for i in range(1,11):
list.add(i)
list.Print();
swap = Solution()
swap.swapPairs(list.head);
swap.Print(list.head);
错误是这样的 AttributeError:'解决方案'对象没有属性' head' 这里有什么问题 如何使用另一个类
中定义的链表答案 0 :(得分:3)
问题是您的Solution
类没有任何属性,head
或其他。并且应该没有明显的属性。 (它实际上不是一个有用的类;它只是一个函数集合,没有充分的理由作为方法。)
如果您想访问作为参数传递的head
,请执行此操作。改变这一行:
tmp = self.head
......对此:
tmp = head
现在你的代码可以运行了。
答案 1 :(得分:1)
你应该添加
__init__
在Solution
Print
课程的tmp = self.head
。
在tmp = head
内部,您尝试制作s = '128.0'
,但您从未定义过self.head。
或者,您可以改为news = str2double(s);
。