Как вызвать функцию и получить параметр в функции вне класса связанного списка, используя переменные, присутствующие в связанном списке - PullRequest
0 голосов
/ 18 апреля 2019

Я использую два файла Python, один файл, в котором присутствует класс связанного списка, и другой файл, в который я импортирую первый файл, чтобы я мог использовать связанный список, который я построил в первом файле.Второй файл для обратного файла.Я уже сделал реверс, используя итерационную часть, сейчас пытаюсь построить код для реверса, используя рекурсию, и для этого я вызываю и передаю аргументы внутри функции, но что-то не получается, и он показывает TypeError, как будто эта функция не имеет аргументов.

Пожалуйста, проверьте мой код с последующей ошибкой

Второй файл

from code.linkedlist import *
llist=linkedlist()
llist.appendnodesatbegin(23)
llist.appendnodesatbegin(45)
llist.appendnodesatbegin(67)
llist.appendnodesatbegin(12)
llist.appendnodesatbegin(-11)
llist.appendnodesatbegin(0)
print ("Before reverse")
llist.display()
def reverseiterative():
    llist.current = llist.head
    llist.prev = None
    while (llist.current):
        llist.next = llist.current.next
        llist.current.next = llist.prev
        llist.prev = llist.current
        llist.current = llist.next
    llist.head = llist.prev
reverseiterative()
print("After the reverse of list using iterative method")
llist.display()
llist.p=llist.head
llist.prev=None
def reverserecursive(p,prev):
    next1=llist.p.next
    p.next=prev
    if llist.next1 is None:
        return
    else:
        reverserecursive(next1,p)


reverserecursive(llist.p,llist.prev)
print("After the reverse of list using recursive method")
llist.display()

first file:

class node:
    def __init__(self,data):
        self.data=data
        self.next=None
class linkedlist:
    def __init__(self):
        self.head=None
        self.last_pointer=None
    def appendnodesatbegin(self,data):
        newnode=node(data)
        if(self.head==None):
            self.head=newnode
            self.last_pointer=newnode
        else:
            self.last_pointer.next=newnode
            self.last_pointer=self.last_pointer.next
    def appendnodesatend(self,data):
        newnode=node(data)
        newnode.next=self.head
        self.head=newnode
    def appendatmid(self,prev,new):
        temp=self.head
        newnode=node(new)
        while(temp):
            if(temp.data==prev):
                newnode.next=temp.next
                temp.next=newnode
            temp=temp.next
    def display(self):
        temp=self.head
        while(temp):
            print(temp.data)
            temp=temp.next
    #def reversedisplay(self):

Ошибка

reverseiterative(llist.p,llist.prev)
TypeError: reverseiterative() takes no arguments (2 given)

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

reverseiterative как определено:

def reverseiterative():

не принимает аргументов, вы вызываете его с помощью 2.

Возможно, вы должны были вызвать reverserecursive с учетом переданных вами аргументов иаргумент в сигнатуре функции:

def reverserecursive(p,prev):
0 голосов
/ 18 апреля 2019

Ваша функция не принимает никаких параметров при замедлении:

reverseiterative(foo, bar):

Это (или любые другие значения, которые вы хотите обработать) исправит это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...