#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. пожалуйста, проверьте сейчас. Спасибо