Escolar Documentos
Profissional Documentos
Cultura Documentos
Instruções Gerais:
● Implemente o programa abaixo em um novo projeto.
o Finalizado o trabalho, compacte em zip e o envie pelo Moodle.
● Você pode utilizar o projeto da aula como base, alterando a estrutura e as operações.
Lista Sequencial
Implemente as operações abaixo em uma Lista Sequencial Estática.
// Insere elemento em uma dada posição da l ista, abrindo espaço para o mesmo
// Retorna: 0 para sucesso e -1 para erro
int listInsertAt(List* list, int pos, int e )
// Remove elemento de uma dada posição da lista, fechando o espaço resultante
// Retorna: 0 para sucesso e -1 para erro
int listRemoveAt(List* list, int pos)
struct List {
static const int MAX = 10; // capacidade máxima da lista
int data[MAX];
};
// Cria lista e prepara array (todas as posições recebem -1, pois estão vazias)
List* listCreate();
// Devolve a quantidade de posições não vazias, isto é, diferentes de -1
int listSize(List* list);
// Insere elemento na próxima posição disponível da lista (marcada com -1)
int listInsert(List* list, int e);
// Procura e remove o elemento i nformado. Marca posição com -1 (disponível)
int listRemove(List* list, int e );
// Imprime todos os elementos na lista (incluindo as posições vazias)
void listPrint(List* list);
// Move os elementos para a esquerda de forma a eliminar o
s espaços v azios (-1)
// entre os mesmos. Ao final, todos os elementos estarão à esquerda e os espaços
// vazios, a direita.
void listDefrag(List* list);
Exemplo de uso da Lista Sequencial Esparsa
listPrint(l);
// [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]
listInsert(l, 4);
listInsert(l, 5);
listInsert(l, 2);
listInsert(l, 8);
listInsert(l, 3);
listInsert(l, 7);
listPrint(l);
listRemove(l, 4);
listPrint(l);
);
listRemove(l, 2
listRemove(l, 8 );
listPrint(l);
listDefrag(l);
listPrint(l);