3. Lista Linear– Um Tipo Abstrato de Dados 3.1 TDA para uma lista linear não ordenada Descreveremos um TDA para uma lista linear que suporta apenas números inteiros e as as seguintes operações: a. b. c. d. e. Inicializar_Lista - colocar a lista na condição de lista vazia Lista_É_Vazia - verifica se a lista está vazia Lista_É_Cheia - verifica se a lista está cheia Insere_Elem - insere elemento dado num dos extremos da lista Remove_Elem - remove o elemento dado TDA lista_não_ordenada é: dados: números inteiros operações: Inicializar_Lista entrada: o endereço da lista pré-condição: nenhuma processo: colocar a lista na condição de lista vazia saída: nenhuma pós-condição: uma lista vazia Lista_É_Vazia entrada: o endereço da lista pré-condição: nenhuma processo: verificar se a lista está na condição de vazia saída: retorna True se lista vazia retorna False se lista não está vazia pós-condição: nenhuma Lista_É_Cheia entrada: o endereço da lista pré-condição: nenhuma processo: verificar se a lista está na condição de cheia saída: retorna True se lista está cheia retorna False se lista não está cheia pós-condição: nenhuma Insere_Elem entrada: o endereço da lista e o elemento a ser inserido pré-condição: a lista não estar cheia processo: inserir o elemento dado num dos extremos da lista saída: retorna 1 se a inserção ocorreu com sucesso retorna -1 se a inserção ocorreu com fracasso pós-condição: a lista de entrada com um elemento a mais Remove_Elem entrada: o endereço da lista e o elemento que se deseja remover pré-condição: lista não ser vazia processo: percorrer a lista a partir do seu inicio até encontrar o elemento desejado ou chegar ao final da lista. Se encontrar o elemento remova-o da lista, garantindo que a lista mantenha sua ordem linear saída: retorna 1 se a remoção ocorreu com sucesso retorna -1 se a remoção ocorreu com fracasso pós-condição: a lista de entrada com um elemento a menos Fim TDA lista_não_ordenada 3.2 Descrição do TDA para uma Lista Linear Ordenada Usaremos as mesmas funções descritas na subseção 3.1.1, com algumas modificações apenas para as operações Insere_Elem e Remove_Elem. a) b) c) d) e) Inicializar_Lista - colocar a lista na condição de lista vazia Lista_É_Vazia - verifica se a lista está vazia Lista_É_Cheia - verifica se a lista está cheia Insere_Elem - insere elemento dado na posição correta na lista Remove_Elem - remove o elemento desejado. Neste caso a busca pelo elemento pode ser otimizada. TDA lista_ordenada é: dados: números inteiros operações: Inicializar_Lista entrada: o endereço da lista pré-condição: nenhuma processo: colocar a lista na condição de lista vazia saída: nenhuma pós-condição: uma lista vazia Lista_É_Vazia entrada: o endereço da lista pré-condição: nenhuma processo: verificar se a lista está na condição de vazia saída: retorna True se lista vazia retorna False se lista não está vazia pós-condição: nenhuma Lista_É_Cheia entrada: o endereço da lista pré-condição: nenhuma processo: verificar se a lista está na condição de cheia saída: retorna True se lista está cheia retorna False se lista não está cheia pós-condição: nenhuma Insere_Elem entrada: o endereço da lista e o elemento a ser inserido pré-condição: a lista não estar cheia processo: percorrer a lista a partir do seu inicio até encontrar o primeiro elemento maior que o elemento a ser inserido e guardar esta posição. Inserir o elemento na lista de tal forma que esta se mantenha ordenada. saída: retorna 1 se a inserção ocorreu com sucesso retorna -1 se a inserção ocorreu com fracasso pós-condição: a lista de entrada com um elemento a mais Remove_Elem entrada: o endereço da lista e o elemento que se deseja remover pré-condição: lista não ser vazia processo: percorrer a lista a partir do seu inicio até encontrar o elemento desejado ou até encontrar um elemento maior que o valor do elemento que se quer remover. Se encontrar o elemento removao da lista, garantindo que a lista se mantenha ordenada. saída: retorna 1 se a remoção ocorreu com sucesso retorna -1 se a remoção ocorreu com fracasso pós-condição: a lista de entrada com um elemento a menos Fim TDA lista_ordenada