如何使用python中另一个类中定义的链表

时间:2015-05-06 23:17:40

标签: python linked-list

这是链表代码中的简单交换节点

__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' 这里有什么问题 如何使用另一个类

中定义的链表

2 个答案:

答案 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);