如何修复缺少2个必需位置参数的函数-已定义时

时间:2019-04-22 15:42:19

标签: python-3.x

我有两个文件用于生成单链列表。

第一个文件有两个类。一个创建头,另一个添加头。现在的第二个,打开文件,读取文件,然后将每个单词放入我的insert函数中,insert函数从中创建一个节点。

我的问题是我的插入函数需要'self'和'x',即使我在另一个文件上定义了该类,也不需要它,对吧?

这是我另一个文件的代码(现在我正在测试,因此它只是想在我的插入函数中插入一个单词)。

Linked_List
node = Linked_List_node
node.insert('insert_this_into_function')

这就是我的班级样子。 (此外,我不确定第一行-Linked_List。我知道我需要以某种方式创建头节点,但无法弄清楚该怎么做。

class Linked_List:
    def __init__(self):
        self.head = None


class Linked_List_node:
    def __init__(self, value):
        self.name = value
        self.next = None

    def print(self):
        p = self.head
        while p is not None:
            p.print()
            p = p.next

    def insert(self, x):
        """"""
        p = self.head
        q = None
        done = False
        while not done:
            if self.head == None:
                t = Linked_List_node(x)
                self.head = t
                self.head = Linked_List_node(x)
                done = True
            elif p == None:
                t = Linked_List_node(x)
                q.next = t
                done = True
            elif x < p.data:
                if self.head == p:
                    t = Linked_List_node(x)
                    t.next = p
                    self.head = t
                    done = True
                else:
                    t = Linked_List_node(x)
                    t.next = p
                    q.next = t
                    done = True
            q = p
            p = p.next

1 个答案:

答案 0 :(得分:0)

我已经稍微修正了您的课程。首先,Linked_List_node将具有datanext属性。

class Linked_List_node:
    def __init__(self, value):
        self.data = value
        self.next = None

然后我们将拥有Linked_List,该节点将保留以下节点列表。对于插入,我们通过检查if p!= None: p = p.next

进行迭代直到到达列表末尾
class Linked_List:
    def __init__(self):
        self.head = None

    def print(self):
        #Iterate till you reach end of linked list
        p = self.head
        while p is not None:
            #print data
            print(p.data)
            p = p.next

    def insert(self, x):
        """"""
        p = self.head
        q = None
        done = False
        while not done:
            if self.head == None:
                t = Linked_List_node(x)
                self.head = t
                self.head = Linked_List_node(x)
                done = True
            elif p == None:
                t = Linked_List_node(x)
                q.next = t
                done = True
            elif x < p.data:
                if self.head == p:
                    t = Linked_List_node(x)
                    t.next = p
                    self.head = t
                    done = True
                else:
                    t = Linked_List_node(x)
                    t.next = p
                    q.next = t
                    done = True
            q = p
            #We reach the end of linked list to insert when we hit None
            if p!= None:
                p = p.next

然后我像下面这样调用类。

head = Linked_List_node(1)
ll = Linked_List()
ll.head = head
ll.insert(2)
ll.insert(3)
ll.print()
#1
#2
#3