8
 Ciência da Computação  L 1  L 2  L 3  ... L n-1  L n s ru uras e Dados Básicas Prof. Vinícius Alves

TAD - Listas Por Arranjo Com C

  • Upload
    eversec

  • View
    132

  • Download
    0

Embed Size (px)

Citation preview

5/13/2018 TAD - Listas Por Arranjo Com C - slidepdf.com

http://slidepdf.com/reader/full/tad-listas-por-arranjo-com-c 1/8

Ciência da Computação

 

L1 L2 L3 ... Ln-1 Ln

s ru uras eDados

Básicas

Prof. Vinícius Alves

5/13/2018 TAD - Listas Por Arranjo Com C - slidepdf.com

http://slidepdf.com/reader/full/tad-listas-por-arranjo-com-c 2/8

TADs – Tipos Abstratos de

Dados

uma estrutura de dados e um conjunto deoperações que se definem sobre essa

estrutura; Tais estruturas podem ser implementadas com

aloca ão estática definida em tem o de

compilação) e dinâmica (definida em tempo deexecução);

Estruturas estudadas :Listas, Pilhas, Filas eÁrvores; 2

5/13/2018 TAD - Listas Por Arranjo Com C - slidepdf.com

http://slidepdf.com/reader/full/tad-listas-por-arranjo-com-c 3/8

Listas estáticas

Consistem em um con unto de elementos de mesmotipo armazenados em posições contíguas de memória(vetores);

X1 X2 ... Xn ...

1º elementoda lista

Últimoelemento

MaxTam2º

Conjunto de operações: Procedimentos: Iniciação, Inserção, Remoção, Busca,

Impressão;

Funções: Vazia, Cheia.

 

3

5/13/2018 TAD - Listas Por Arranjo Com C - slidepdf.com

http://slidepdf.com/reader/full/tad-listas-por-arranjo-com-c 4/8

Estrutura da Lista Estática

#define INICIOARRANJO 1#define MAXTAM 1000

• Os itens sãoarmazenados em um

typedef int TipoApontador;typedef int TipoChave;

struct TipoItem {TipoChave Chave; / ∗ −−− outros componentes−−− ∗ / 

array de tamanhosuficiente para armazenara lista.

• O campo Último apontapara a posição seguinte ado último elemento da

struct TipoLista {TipoItem Item [ MAXTAM ] ;TipoApontador Primeiro , Ultimo ;

};4

lista.

• A constante MaxTamdefine o tamanho máximopermitido para alista.

5/13/2018 TAD - Listas Por Arranjo Com C - slidepdf.com

http://slidepdf.com/reader/full/tad-listas-por-arranjo-com-c 5/8

Operações com Listas

estáticasvoid FLVazia(TipoLista *Lista){

Lista->Primeiro = INICIOARRANJO ; Lista->Ultimo = Lista->Primeiro;

int Vazia(TipoLista Lista){return (Lista.Primeiro == Lista.Ultimo);

}

void Insere (TipoItem x , TipoLista * Lista ) 

if(Lista->Ultimo > MAXTAM)printf ( " Lista esta cheia \n" ) ;else{

Lista-> Item [Lista->Ultimo-1] = x ;

Lista->Ultimo++;}}

5

5/13/2018 TAD - Listas Por Arranjo Com C - slidepdf.com

http://slidepdf.com/reader/full/tad-listas-por-arranjo-com-c 6/8

Operações com Listas

estáticasvoid Retira (TipoApontador p , TipoLista *Lista , TipoItem * Item){

int Aux;if(Vazia(*Lista ) || p >= Lista->Ultimo ){printf("Erro : Posicao nao existe \n") ;return ;

}*Item = Lista -> Item [p - 1];Lista -> Ultimo--;

for (Aux = p;Aux<Lista->Ultimo; Aux++)Lista->Item[Aux-1]=Lista->Item[Aux] ;}

6

5/13/2018 TAD - Listas Por Arranjo Com C - slidepdf.com

http://slidepdf.com/reader/full/tad-listas-por-arranjo-com-c 7/8

Operações com Listas

estáticasvoid Imprime( TipoLista Lista ) {

int Aux;

 for (Aux = Lista.Primeiro − 1; Aux <= ( Lista.Ultimo − 2); Aux++)p r i n t f ( "%d\n" ,Lista.Item[Aux].Chave) ;}

7

5/13/2018 TAD - Listas Por Arranjo Com C - slidepdf.com

http://slidepdf.com/reader/full/tad-listas-por-arranjo-com-c 8/8

Exercícios

• Faça um programa em C utilizando os módulos apresentados anteriormente.O programa deve realizar o cadastro de livros, conforme estrutura Lista

• Elabore uma função que receba uma lista e o ISBN de um livro e retorne a

Livro

int isbn;

char titulo[50];

char autor[50];

8

pos ç o em que o vro se encon ra na s a.

• Elabore uma função “FuraLista“ que insira um livro em qualquer posição dalista. Lembre-se que a inserção de um item no início ou no meio de uma listaimplica no deslocamento de todos os outros itens.