Revisão Arquitetura de Computadores
Por: Janderson Fonseca • 11/4/2017 • Trabalho acadêmico • 413 Palavras (2 Páginas) • 153 Visualizações
- Uma lista é uma estrutura de dados formada por um conjunto de dados que serve para armazenar/guardar dados de forma a preservar a relação de ordem linear entre eles.
- Operações de uma lista:
- Criar uma lista vazia
- Verificar se uma lista está vazia
- Obter o tamanho de uma lista
- Obter/Verificar o valor de um elemento posicionado na lista
- Inserir um novo elemento após ou antes de uma posição na lista
- Remover um elemento de determinada posição da lista
- Exibir os elementos de uma lista
- Concatenar duas listas
- As listas são estruturas de dados bastantes flexíveis, porque podem crescer de acordo com o que se pede, durante a execução do programa, sem problema algum;
- Os Itens podem ser inseridos ou removidos de uma lista de acordo como for necessário.
- Implementação da Lista
- Vazia(Lista). Verifica se a lista está vazia.
- Inserir(valor, Lista). Insere o valor na ultima posição da lista.
- Remover(Lista, posicao). Remove o valor da posição ‘posicao’ da lista.
- TornaVazia(Lista). Torna a Lista vazia.
- Imprimir(Lista). Imprime os elementos da lista
- .
void Imprime(LISTA Lista){
int Auxiliar;
for (Auxiliar = Lista->Primeiro - 1; Aux <= (Lista->Ultimo - 2); Aux++)
printf ( "%d\n" , Lista->Item[Auxiliar]->Valor) ;
}
void Inserir(INT valor , LISTA *Lista){
if ( Lista->Ultimo > TAM)
printf( "Lista cheia\n" ) ;
else { Lista->Elemento[Lista->Ultimo - 1] = valor;
Lista -> Ultimo++;
}
}
void Retira(int p, LISTA *Lista , int *Elemento){ int Auxiliar;
if (Vazia(*Lista ) or p>=Lista->Ultimo)
{ printf ( "Posicao nao encontrada. \n" ) ;
return;
} *Elemento = Lista -> Elemento[p-1];
Lista -> Ultimo--;
for (Auxiliar = p; Auxiliar < Lista -> Ultimo ; Auxiliar++)
Lista -> Elemento[Auxiliar - 1] = Lista -> Elemento[Auxiliar] ;
}
- Como não é necessário declarar ou alocar uma quantidade fixa de memoria, assim evita seu desperdício pois os ponteiros são alocados dinamicamente de acordo com a necessidade.
- Em aplicações que são compiladas o tamanho máximo da lista deve ser informado em tempo de execução. A implementação de apontadores é mais trabalhosa.
- Na implementação com apontadores um elemento guarda em si valores como também uma variável do tipo ponteiro que aponta para um próximo elemento ou pra NULO quando este for o ultimo elemento da LISTA. As inserções e remoções de elementos podem ser feitas em qualquer posição da lista, assim como a leitura para impressão na tela.
- .
typedef struct {
int Chave;
prox *ponteiro
} Elemento;
typedef struct int ∗ponteiro;
- Permite alocar dinamicamente os dados, não precisando assim definir/alocar um tamanho máximo fixo para armazenar os dados.
- Mais trabalhosa sua implementação.
...