Hi, im trying to create a basic LinkedList with different functions
class Data:
def init(self, code=None, name=None, contact=None):
self.code = code
self.name = name
self.contact = contact
class Node:
def init(self, data=None, next=None):
self.data = data
self.next = next
class LinkedList:
def init(self):
self.head = None
def create_node(self, data):
node = Node(data, self.head)
self.head = node
def check_code(self, code):
head = self.head
while head is not None:
if head.data.code == code:
return True
head = head.next
return False
def get_lenght(self):
count = 0
itr = self.head
while itr:
count+=1
itr = itr.next
return count
def insert_first(self, code, name, contact):
if self.head is None:
self.create_node(Data(code, name, contact))
else:
if not self.check_code(code):
head = self.head
self.create_node(Data(code, name, contact))
while head.next is not None:
head = head.next
print('Your registration has been a success')
else:
print('The code is already in the list')
def insert_last(self, data):
if self.head is None:
self.head = Node(data, None)
return
itr = self.head
while itr.next:
itr = itr.next
itr.next = Node(data, None)
def print(self):
top = self.head
i = 1
if self.head is None:
print("LinkedList Empty")
return
while top is not None:
if top.next is None:
print(
f'{i}. ({top.data.code},{top.data.name},{top.data.contact})'
)
else:
print(
f'{i}. ({top.data.code},{top.data.name},{top.data.contact})\n'
)
i += 1
top = top.next
itr = self.head
llstr = ‘’
while itr:
llstr += str(itr.data) + ‘–>>’
itr = itr.next
print(llstr)
if name == ‘main’:
ll = LinkedList()
ll.insert_first(26, ‘miguel’, 3155623743)
ll.insert_first(2645, ‘pipe’, 320523743)
ll.insert_first(2687, ‘gaby’, 3515623743)
ll.print()
print(f’lenght = {ll.get_lenght()}’)
class Informacion():
def __init__(self, codigo=None, nombre=None, telefono=None):
self.codigo = codigo
self.nombre = nombre
self.telefono = telefono
class Nodo():
def __init__(self, objeto=None, siguiente=None):
self.objeto = objeto
self.siguiente = siguiente
class Lista():
def __init__(self):
self.cabeza = None
def es_vacia(self) -> bool:
return (self.cabeza is None)
def crear_lista(self, info):
self.cabeza = Nodo(info)
def crear_nodo(self, info):
self.nodo = Nodo(info)
def insertar_nodo_final(self, codigo, nombre, telefono):
if (self.es_vacia()):
self.crear_lista(Informacion(codigo, nombre, telefono))
else:
if (not self.validar_codigo(codigo)):
top = self.cabeza
self.crear_nodo(Informacion(codigo, nombre, telefono))
while (top.siguiente != None):
top = top.siguiente
top.siguiente = self.nodo
print('Registro ingestado de manera exitosa.')
else:
print('El codigo ya se encuentra en la lista.')
def insertar_nodo_inicio(self, codigo, nombre, telefono):
if (self.es_vacia()):
self.crear_lista(Informacion(codigo, nombre, telefono))
else:
if (not self.validar_codigo(codigo)):
top = self.cabeza
self.crear_nodo(Informacion(codigo, nombre, telefono))
self.cabeza = self.nodo
self.cabeza.siguiente = top
else:
print('El codigo ya se encuentra en la lista.')
def validar_codigo(self, codigo):
top = self.cabeza
while (top != None):
if top.objeto.codigo == codigo:
return True
top = top.siguiente
return False
def mostrar_lista(self):
top = self.cabeza
i = 1
if(self.es_vacia()):
print('La lista se encuentra vacia.')
while (top != None):
if (top.siguiente is None):
print(
f'{i}. ({top.objeto.codigo}, {top.objeto.nombre}, {top.objeto.telefono})')
else:
print(
f'{i}. ({top.objeto.codigo}, {top.objeto.nombre}, {top.objeto.telefono})', end='=>')
i += 1
top = top.siguiente
def actualizar_registro(self, codigo):
if (self.es_vacia()):
print('La lista esta vacia, ingrese registos.')
else:
top = self.cabeza
while (top.siguiente != None and top.objeto.codigo != codigo):
top = top.siguiente
if(top.objeto.codigo == codigo):
top.objeto.nombre = input('Ingrese el nuevo nombre: ')
top.objeto.telefono = input('Ingrese el nuevo telefono: ')
else:
print('El codigo ingresado no existe.')
def eliminar_nodo(self, codigo):
if (self.es_vacia()):
return('La lista esta vacia, no hay registros para eliminar.')
else:
curr = self.cabeza
while (curr.siguiente != None and curr.objeto.codigo != codigo):
prv = curr
curr = curr.siguiente
nxt = curr.siguiente
if curr.objeto.codigo == codigo:
prv.siguiente = nxt
return('El registro se ha eliminado correctamente.')
if curr.objeto.codigo == codigo:
self.cabeza = None
return('El registro se ha eliminado correctamente.')
else:
return('El codigo a eliminar no existe')
def main():
lista = Lista()
x = 1
while (x != 5):
print(f’’’>>>>>>>Ingrese una opcion de las siguientes:<<<<<<<
1. Ingresar un nuevo registro.
2. Visualizar toda la información de la cola.
3. Eliminar un registro.
4. Actualizar un registro.
5. Salir.’’’)
x = input('Opcion: ')
if x == ‘1’: #Ingresar nuevo registro
codigo = input('Ingrese el codigo unico del registro: ')
nombre = input(‘Ingrese el nombre: ‘)
telefono = input(‘Ingrese el telefono: ‘)
lista.insertar_nodo_final(codigo, nombre, telefono)
elif x == ‘2’: #Ver toda la informacion de la cola
print(’’)
lista.mostrar_lista()
print(’’)
elif x == ‘3’: #Eliminar un registro
codigo = input(‘Ingrese el codigo que desea eliminar: ‘)
print(lista.eliminar_nodo(codigo))
elif x == ‘4’: #Actualizar un registro
codigo = input(‘Ingrese el codigo que desea actualizar: ‘)
lista.actualizar_registro(codigo)
elif x == ‘5’: #Finalizar
print(’\nProceso finalizado exitosamente.\n’)
else:
print(’\nIngrese una opcion valida.\n’)
if name == ‘main’:
main()