Я играл с Python совсем недавно из-за его мощности и синтаксиса.Я решил создать связанный список из https://www.tutorialspoint.com, но с моим сильным опытом в Си и привычным ручным распределением памяти, а также наличием указателей для одной из них, функция удаления середины, несколько смущает меня.Я знаю, что объекты делают ссылки на другие объекты и переменные и что интерпретатор Python автоматически обрабатывает это:
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class SLinkedList:
def __init__(self):
self.head = None
def printlist(self):
cur = self.head
while cur is not None:
print(cur.data)
cur = cur.next
def insertAtHead(self, newdata):
NewNode = Node(newdata) #create new node
newNode.next = self.head #create its .next to point to the current node
self.head = newNode #set its .next to point the current head
#creates a linked list with 3 elements
def createOneTwoThree(self):
list = SLinkedList()
list.head = Node('Mon')
e2 = Node('Tues')
e3 = Node('Wed')
list.head.next = e2
e2.next = e3
#function to add at the end of a linked list
def insertAtEnd(self, newdata):
newNode = Node(newdata)#create new node
if self.head = newNode:#if empty insert the thing
self.head = newNode
return
laste = self.head
while(last.next):
last = last.next
last.next = newNode
def inBetween(self, middle_node,newdata):
if middle_node is None:
print('Error 0: The mentioned node is absent')
return
newNode = Node(newdata)
newNode.next = middle_node.next
middle_node.next = newNode
def delete(self, removeKey):
headVal = self.head
if(head is not None):
if (head.data == removeKey):
break
prev = head
head = None
while(head is not None):
if head.data == removeKey:
break
prev = head
head = head.next
if (head == None):
return
prev.next = head.next
head = None
#Link Firt node to second node: list1.head.next = n2*******
Я просто не вижу, что здесь происходит, с точки зрения памяти, которая оправдывает его нахождение вмежду двумя указанными ценностями и связью их вместе.Я все еще новичок в Python и его классах и структурах, но с точки зрения интуитивного подхода метод inBetween не имеет для меня никакого смысла, хотя я вижу, что это самая основная логика.Может кто-то более разбирается в Python, пожалуйста, объясните мне, ПОЧЕМУ это происходит, и что именно происходит с объектами, ссылками и указателями?