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

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

Сообщение Anonymous »

Я написал код, но думаю, что функция push не работает, поскольку когда я вызываю функцию отображения, в связанном списке не отображается ни один элемент. Расскажите, пожалуйста, как добавлять элементы в связанный список и объясните шаги. Я думаю, что 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()


Подробнее здесь: https://stackoverflow.com/questions/556 ... in-these-n
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»