Почему происходит случайное удаление узлов при выходе из очереди?

#python #data-structures #linked-list #circular-list

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

Вопрос:

Вот мой код, но при удалении из очереди кажется, что он удаляет любые случайные значения. Почему это так? Спасибо

 class Node:        
    def __init__(self,data):
        self.data = data
        self.next = None
        
class CircularLinkedlist:       
    def __init__(self):
        self.head = None
        self.size = 0

    def dequeue(self):
        if self.is_empty():
            print('List is Empty') 
        else:
            if self.size == 1:
                self.head = None
                self.size -=1
            else:
                pos = self.head.next
                self.head = pos
                self.head.next = pos.next.next
                self.size -=1
  

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

1. Как вы думаете, почему он удаляет случайные узлы?

2. self.head.next = pos.next.next неверно. По какой-то причине вы связываете первый узел с третьим узлом (вырезая второй узел).

3. Что self.head.next = pos.next.next предполагается делать?

Ответ №1:

Эта строка:

 self.head.next = pos.next.next
  

неверно. Вы связываете то, что сейчас является первым узлом, с третьим узлом (вырезая второй узел).

Я не вижу никакой причины для этой строки: я предлагаю вам удалить ее.