tabela = [] header = [None, None, None, None, None, None, None, None] tabela_a_inserir = [[1350,"Ademar",25,5000,None,None], [1600,"Afonso",27,7000,None,None], [1075,"Angela",22,6000,None,None], [1850,"Antonio",28,8500,None,None], [1300,"Carlos",23,7500,None,None], [1000,"Cesar",25,9000,None,None], [1440,"Claudia",30,8000,None,None], [1400,"Cristina",20,10000,None,None], [1900,"Deise",26,7500,None,None], [1050,"Diana",35,5000,None,None], [1700,"Eder",32,6000,None,None], [1800,"Edilson",34,6500,None,None], [1076,"Edmundo",26,5500,None,None], [1480,"Enio",28,7800,None,None], [1950,"Flavio",39,9000,None,None]] def print_tabela_e_header(): print "Tabela:" for item in tabela: if item[4] == None: item[4] = -1 if item[5] == None: item[5] = -1 print "%d %s %d %d %d %d" % (item[0], item[1], item[2], item[3], item[4]+1, item[5]+1) print "\nHeader:" for pos, item in enumerate(header): if item == None: item = -1 print "%d %d" % (pos+1, item+1) print "\n" def f(c): return (c % 8) def inserir(item): tabela.append(item) pk = f(item[0]) item[5] = pk if header[pk] == None: header[pk] = tabela.index(item) else: pos_ant = header[pk] pos_enc = tabela[pos_ant][4] while pos_enc != None: pos_ant = pos_enc pos_enc = tabela[pos_enc][4] if pos_enc == None: tabela[pos_ant][4] = tabela.index(item) for item in tabela_a_inserir: inserir(item) ex_5b = [[1030, "Adriano", 30, 5000, None, None], [1015, "Adriana", 15, 2000, None, None], [1020, "Jose", 28, 7500, None, None]] for item in ex_5b: inserir(item) print_tabela_e_header()