Удалить средний узел в Python [из чисто C фона] - PullRequest
0 голосов
/ 22 октября 2018

Я играл с 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, пожалуйста, объясните мне, ПОЧЕМУ это происходит, и что именно происходит с объектами, ссылками и указателями?

...