A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

LISTAS LINKADAS No Mapeamento Seqüencial tem-se o problema de re-organizar as seqüências de informações nas operações de inserções e remoções Uma solução.

Apresentações semelhantes


Apresentação em tema: "LISTAS LINKADAS No Mapeamento Seqüencial tem-se o problema de re-organizar as seqüências de informações nas operações de inserções e remoções Uma solução."— Transcrição da apresentação:

1 LISTAS LINKADAS No Mapeamento Seqüencial tem-se o problema de re-organizar as seqüências de informações nas operações de inserções e remoções Uma solução elegante para mover dados em representações seqüenciais é o uso de Listas Linkadas (Linked Lists) A localização dos elementos em Listas Linkadas pode estar em qualquer lugar da memória. Fator importante - numa representação seqüencial, a ordem dos elementos é a mesma de uma lista ordenada. NO caso de Lista linkada, a ordem não necessariamente é a mesma.

2 LISTAS LINKADAS (cont.) Acesso correto ao próximo elemento para Listas linkadas - é necessário ter uma outra informação indicando a localização desse próximo elemento. Convenção usada para representar Listas linkadas: NÓ, que consiste dos dados junto com informação do link para ter acesso ao próximo bat cat eat fat wat F

3 LISTAS LINKADAS (cont.) Capacidade de dividir a informação em Dado e Link Nó Mecanismo para criar um novo Nó Mecanismo para devolver um Nó para memória A L O C A Ç Ã O D I N Â M I C A

4 Supõe-se que um mecanismo de criar um tipo Nó com duas partes: Dado e Link; Também supõe-se que duas funções new e delete criar respectivamente para criar um novo Nó devolver e para devolver um Nó LISTAS LINKADAS (cont.) Dado Link Nó

5 class Node { private: intdado; Node *link; public: Node ( ) { dado = 0; link = 0; } ~Node ( ) { } intgetDado ( ) { return dado; } voidputDado ( int valor ) { dado = valor; } Node*getLink ( ) { return link; } voidputLink ( Node * p ) { link = p; } voidprintOn ( ) { cout << dado << \n; } }

6 class List { private: Node*first, *last; public: List ( ) { } ~List ( ) { } voidinsert ( int elemento ) { Node * p = new Node; p->putDado ( elemento ); if ( first == 0 ) first = last = p; else { last->putLink ( p ); last = p; } voidprinton ( ); } void printOn ( ) { Node * p = first; while ( p != 0 ) { cout printOn(); p = p->getLink( ); } void main ( ) { List l1; l1.insert ( 100 ); l1.insert ( 1 ); l1.insert ( 10 ); l1.insert ( 50 ); l1.printOn ( ); }

7 p 100 first last p 1 p 10 last p 50 last Esta implementação refere-se à qual estrutura de dados já vista??? FILA - utilizando lista linkada

8 Top P I L H A

9 Operação de inserção na Pilha utilizando estrutura de lista linkada insereNaPilha ( Node * Top, Type elemento ) { Node * p = new Node p->Dado = elemento if ( Top == 0 ) Top = p else { p->Link = Top Top = p } E a operação de remoção? EXERCÍCIO EXERCÍCIO: Utilizando o recurso de ALOCAÇÃO DINÂMICA, implementar as operações sobre uma lista linkada.

10 SOMA DE POLINÔMIOS O problema de manipular polinômios utilizando listas linkadas é um exemplo clássico. Representar qualquer número de diferentes polinômios (Memória) coefexp link A(x) = 3x x

11 A = B = pa pb EXERCÍCIO EXERCÍCIO: Utilizando o recurso de ALOCAÇÃO DINÂMICA, implementar a soma de polinômios.


Carregar ppt "LISTAS LINKADAS No Mapeamento Seqüencial tem-se o problema de re-organizar as seqüências de informações nas operações de inserções e remoções Uma solução."

Apresentações semelhantes


Anúncios Google