You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
def __init__(self):
self.first = None
self.last = None
self.len_list = 0
def push(self, alimentos,clientes,funcionarios, index):
if index >= 0:
# cria o novo nó
node = Node(alimentos,clientes, funcionarios)
# verifica se a lista está vazia
if self.empty():
self.first = node
self.last = node
else:
if index == 0:
# inserção no início
node.setNext(self.first)
self.first = node
elif index >= self.len_list:
# inserção ao final
self.last.setNext(node)
self.last = node
else:
# inserção no meio
prev_node = self.first
curr_node = self.first.getNext()
curr_index = 1
while curr_node != None:
if curr_index == index:
# seta o curr_node como o próximo do nó
node.setNext(curr_node)
# seta o node como o próximo do prev_nodes
prev_node.setNext(node)
prev_node = curr_node
curr_node = curr_node.getNext()
curr_index += 1
# atualiza o tamanho da lista
self.len_list += 1
def pop(self, index):
if not self.empty() and index >= 0 and index < self.len_list:
flag_remove = False
if self.first.getNext() == None:
# possui apenas 1 elemento
self.first = None
self.last = None
flag_remove = True
elif index == 0:
# remove do início, mas possui mais de 1 elemento
self.first = self.first.getNext()
flag_remove = True
else:
'''
Se chegou aqui é porque a lista possui mais
de 1 elemento e a remoção não é no início
'''
prev_node = self.first
curr_node = self.first.getNext()
curr_index = 1
while curr_node != None:
if index == curr_index:
# o próximo do anterior aponta para o próximo do nó corrente
prev_node.setNext(curr_node.getNext())
curr_node.setNext(None)
flag_remove = True
break
prev_node = curr_node
curr_node = curr_node.getNext()
curr_index += 1
if flag_remove:
# atualiza o tamanho da lista
self.len_list -= 1
def empty(self):
if self.first == None:
return True
return False
def length(self):
return self.len_list
def show(self):
contador = 0
curr_node = self.first
while curr_node != None:
print(contador, '-', 'alimentos:', curr_node.alimentosGet(), '|clientes:', curr_node.clientesGet(),'|funcionarios: ', curr_node.funcionariosGet())
curr_node = curr_node.getNext()
contador += 1
print('')
def menu(self, contador=0):
while contador == 0:
print(35 * '-')
print('Insira a opção desejada: \n')
opcao = (input('0 - Para sair do programa\n'
'1 - Para inserir\n'
'2 - Para exibir as informações em tela\n'
'3 - Para mostrar o tamanho da lista\n'
'4 - Para apagar um nó\n'
'Opção: '))
print(35 * '-')
if opcao == '0':
contador = 1
elif opcao == '1':
os.system('cls' if os.name == 'nt' else 'clear')
alimen = input('informe os alimentos: ')
client = input('informe os clientes: ')
funcio = input('informe os funcionarios: ')
posicao = int(input('informe a posição: '))
lista.push(alimen, client, funcio,posicao)
time.sleep(1)
print('\nNó criado com sucesso ')
time.sleep(1)
os.system('cls' if os.name == 'nt' else 'clear')
elif opcao == '2':
if lista.empty():
print('Lista Vazia')
time.sleep(1)
else:
lista.show()
elif opcao == '3':
print('Tamanho da lista: {}\n'.format(lista.length()))
time.sleep(1)
elif opcao == '4':
os.system('cls' if os.name == 'nt' else 'clear')
lista.show()
nó = int(input('Informe a posição do nó que deseja remover: '))
lista.pop(nó)
time.sleep(1)
print('\nNó removido')
print(35 * '-')
lista.show()
time.sleep(2)
lista = LinkedList()
lista.menu()
The text was updated successfully, but these errors were encountered:
import time
import os
class Node:
class LinkedList:
lista = LinkedList()
lista.menu()
The text was updated successfully, but these errors were encountered: