Обмен между двумя узлами с использованием заданных элементов, которые присутствуют в этих узлах. Python-3.0 используется для написания кода

#python #data-structures #swap #singly-linked-list

#python #структуры данных #обмен #односвязный список

Вопрос:

Я написал код, но я думаю, что функция push не работает, так как при вызове функции отображения ни один элемент не отображается в связанном списке. Пожалуйста, скажите мне, как добавить элементы в связанный список и объяснить шаги. Я думаю, что last_pointer рассматривается как локальная переменная и не сохраняет ее последнее значение. Если каждый раз, когда я объявляю last_pointer, он не будет добавляться к следующему узлу.

Вывод:

 Linked list before any swapping
key1 is not present in the list
key1 is not present in the list
key1 is not present in the list
____________________
  

 # Swapping between two nodes present in linkedlist

class node:
    def __init__(self,data):
        self.data=data
        self.next=None
class linkedlist:
    def __init__(self):
        self.head=None
    def push(self,newdata):
        newnode=node(newdata)
        if(self.head==None):
            last_pointer=self.head
            last_pointer=newnode
            last_pointer=last_pointer.next
        else:
            last_pointer.next=newnode
            last_pointer=last_pointer.next
    def swapnodes(self,key1,key2):
        node1=self.head
        node2=self.head
        #if elements are similar
        if(key1==key2):
            print("keys are similar")
            return
        #find previous of element and element location in the list
        while(node1):
            if(node1==key1):
                break
            prevofnode1=node1
            node1=node1.next
        while(node2):
            if(node2==key2):
                break
            prevofnode2=node2
            node2=node2.next
        #if elements are not present in the list
        if(node1==None):
            print("key1 is not present in the list")
            return
        if(node2==None):
            print("key2 is not present in the list")
            return
        #if node present at beginning or at mid or at end
        temp1=node2.next
        temp2=node1.next
        if(prevofnode1==None):
            self.head=node2
            node2.next=node1.next
            prevofnode2=node1
            node1.next=temp1
            temp1=None
        else:
            prevofnode1=node2
            node2.next=node1.next
            prevofnode2=node1
            node1.next=temp1
            temp1=None
        if(prevofnode2==None):
            self.head=node1
            node1.next=node2.next
            prevofnode1=node2
            node2.next=temp2
            temp2=None
        else:
            prevofnode2=node1
            node1.next=node2.next
            prevofnode1=node2
            node2.next=temp2
            temp2=None
    def display(self):
        temp=self.head
        while(temp):
            print(temp.data)
            temp=temp.next
llist=linkedlist()
llist.push(22)
llist.push(92)
llist.push(-20)
llist.push(2)
llist.push(23)
llist.push(102)
print("Linked list before any swapping")
llist.display()
llist.swapnodes(22,102)
llist.swapnodes(22,-20)
llist.swapnodes(22,13)
llist.display()
  

Комментарии:

1. Пожалуйста, также опубликуйте сообщения об ошибках.

2. пожалуйста, проверьте сейчас. Спасибо