Escolar Documentos
Profissional Documentos
Cultura Documentos
Listaestatica Programação
Listaestatica Programação
thatyana@unifei.edu.br
seraphim@unifei.edu.br
Denição de Lista
Uma lista é uma estrutura que armazena elementos de forma
alinhada, ou seja, os elementos são dispostos um após o outro,
como em uma lista de nomes, peças, valores, pessoas, compras.
I Uma lista nada mais é do que uma sequência de zero ou mais
elementos x1 , x2 , . . . , xn , onde:
I x é de um determinado tamanho;
Estática:
I Todo o espaço de memória a ser utilizado (para armazenar os
itens) é reservado (alocado) no início da execução do
programa.
I Esse espaço de memória permanece reservado durante toda a
execução do programa, independente de estar sendo
efetivamente utilizado ou não.
I Os elementos podem ser dispostos de duas formas:
1. Sequencial: os itens cam, necessariamente, em sequência
(um ao lado do outro) na memória.
2. Encadeada: os itens não estão, necessariamente, em posições
de memória adjacentes, ou seja, em posições próximas umas
das outras.
I As listas estáticas são implementadas utilizando um vetor.
UNIFEI ECOP02 Estrutura de Dados
Introdução
Representação
Dinâmica:
I O espaço de memória a ser utilizado (para armazenar os itens)
pode ser reservado (alocado) no decorrer da execução de um
programa, quando for efetivamente necessário.
I O espaço reservado pode ser liberado durante a execução do
programa, quando não for mais necessário.
I As listas dinâmicas são implementadas utilizando ponteiros e
variáveis dinâmicas.
linear.
Vantagens:
I Acesso direto a qualquer elemento da lista.
I Tempo constante para acessar o i-ésimo elemento (dependerá
somente do índice).
Desvantagens:
I Movimentação quando o item é eliminado/inserido.
I Tamanho máximo pré-estimado.
Quando usar:
I Listas pequenas.
I Inserção/remoção no m da lista.
I Tamanho máximo bem denido.
Função main()
1 int main(int argc, char **argv){
2 int aux, i;
3 //insere elemento
4 for(i=0; i<MAX; i++){
5 aux = rand() % (MAX*2);
6 if(pesqSeqListaEstSeq(aux) == -1){
7 insereListaEstSeq(aux);
8 }//end if
9 else{
10 i--;
11 }//end else
12 }//end for
Pesquisa Sequencial
1 //retorna a posicao de um elemento
2 //ou -1 caso nao encontrou
3 int pesqSeqListaEstSeq(int chave){
4 int i = 0;
5 while((i < dispo) && (listaEstSeq[i] < chave)){
6 i++
7 }//end while
8 if((i < dispo) && (listaEstSeq[i] == chave)){
9 return i;
10 }//end if
11 else{
12 return -1;
13 }//end else
14 }//end pesqSeqListaEstSeq
UNIFEI ECOP02 Estrutura de Dados
Lista Estática Sequencial
Pesquisa Binária
com sucesso.
I Se o elemento do meio vier antes do elemento buscado, então
Pesquisa Binária
1 //retorna a posicao de um elemento ou
2 //-1 caso nao encontrou
3 int pesqBinListaEstSeq(int chave){
4 int meio, inf=0; //limite inferior
5 int sup = MAX-1; //limite superior
6 while(inf <= sup){
7 meio=(inf + sup)/2;
8 if(chave == listaEstSeq[meio]){
9 return meio; //chave encontrada
10 }//end if
11 else{