Python - LinkedList

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 19 puestos en Python (en relación al último mes)
Gráfica de Python

LinkedList

Publicado por Raul (3 intervenciones) el 01/04/2020 23:52:37
Hola,

Necesito un método que admita como parámetro un valor que se va a insertar en la lista. El valor se insertará en orden después de todos los que sean menores y justo antes de los que sean mayores o iguales. La lista permanecerá ordenada de menor a mayor en todo momento.

Falta un bloque de codigo con más métodos pero no lo he incluido para que no sea muy largo el codigo. El problema tiene que ser con la POO

Adjunto el código


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import random
 
from slt import SortedList
 
if __name__ == "__main__":
 
    my_list = SortedList()
 
    for i in range(10):
 
        my_list.insert(random.randint(10, 78))
 
    for item in my_list:
 
        print(item)




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def add_value(self, value):
 
    if value == 0:
 
        self.add_value(value)
 
    elif value == len(self):
 
        self.append(value)
 
    elif value < 0 or value > len(self):
 
        raise IndexError
 
    else:
 
        current = self.__first
 
        current_pos = 1
 
 
 
        while current_pos < value:
 
            current = current.next_node
 
            current_pos += 1
 
 
 
        current.next_node = self.Node(value, current.next_node)
 
        self.__len += 1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

LinkedList

Publicado por joel (901 intervenciones) el 02/04/2020 10:08:36
Hola Raul, no que meda muy claro... que es slt? es una clase tuya?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha disminuido su posición en 19 puestos en Python (en relación al último mes)
Gráfica de Python

LinkedList

Publicado por Raul (3 intervenciones) el 02/04/2020 12:05:40
Slt es el nombre del fichero que contiene a la clase con nombre SortedList. El código completo que tengo es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
import random
 
from slt import SortedList
 
if __name__ == "__main__":
    my_list = SortedList()
 
    for i in range(10):
        my_list.insert(random.randint(10, 78))
 
    for item in my_list:
        print(item)

La primera parte, la superior, no puede ser modificada porque la empleo para otra cosa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class SortedList:
    class Node:
      def __init__(self, value, next_node = None):
          self.value = value
          self.next = next_node
 
     def __init__(self):
         self.first = None
         self.len = 0
 
    def __len__(self):
        return self.len
 
    def __iter__(self):
        self.current = self.first
        return self
 
    def __next__(self):
       if self.current != None:
           result = self.current.value
           self.current = self.current.next_node
           return result
       else:
           raise StopIteration

Esta otra parte superior tampoco la puedo modificar porque voy a reutilizar el código en otro módulo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def add_value(self, value):
  # Este es el método que he intentado
    if value == 0:
        self.add_value(value)
    elif value == len(self):
        self.append(value)
    elif value < 0 or value > len(self):
        raise IndexError
    else:
        current = self.__first
        current_pos = 1
 
        while current_pos < value:
            current = current.next_node
            current_pos += 1
 
        current.next_node = self.Node(value, current.next_node)
        self.__len += 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.475
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

LinkedList

Publicado por joel (901 intervenciones) el 02/04/2020 15:47:51
Hola Raul, no entiendo muy bien... en la linea 9 llamas al método insert de la clase SortedList, pero en el código que muestras de la clase SortedList, no esta dicho método!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha disminuido su posición en 19 puestos en Python (en relación al último mes)
Gráfica de Python

LinkedList

Publicado por Raul (3 intervenciones) el 02/04/2020 20:07:26
Ese método es para el que se llama add_value que sin querer lo cambié
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar