Baixe o app para aproveitar ainda mais
Prévia do material em texto
ESTRUTURA DE DADOS Aula 8 – Alocação Dinâmica/ Listas Encadeadas - Introdução ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Atenção aos Temas Principais dessa Aula ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Conteúdo Programático desta aula & & ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Direto ao Assunto ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 A alocação dinâmica de memória vem possibilitar a criação de tipos de dados e estruturas de qualquer tamanho durante a execução do programa, além de evitar alocação de memória desnecessária. A vantagem ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Para alocar / desalocar usaremos as funções malloc() e free()? ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ATENÇÃO! Isso é linguagem C. Na linguagem C++, usaremos new e delete. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Sua função é fazer alocação dinâmica de memória, retornando o endereço inicial do bloco alocado. Você poderá alocar espaço para armazenar um dado ou um conjunto de dados(array). Se você for alocar para armazenar um dado,, deverá fazê- lo com new,, mas se for para armazenar um array, use new[ ]. Operador new ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Sua função é retornar para a área de memória livre o espaço que foi alocado dinamicamente. Se você for retornar uma área que estava armazenando um valor, deverá usar delete, mas se for um array, use delete [ ]. Operador delete ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Só usarmos esse operador não nos dará garantia de que tudo ocorrerá sem problemas com afirma DROZDEK, A(2002, p.9-10) Operador delete ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Uma das formas de se fazer isso, é atribuir 0(zero) à variável ponteiro para que ela se torne nula. Operador delete ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Fragmentação Externa e Fragmentação Interna ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 OPERADORES ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 OPERADOR de ENDEREÇO OPERADORES ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 OPERADOR de ENDEREÇO OPERADORES Retorna o endereço do operando ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 OPERADOR de INDIREÇÃO OPERADORES ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 OPERADOR de INDIREÇÃO OPERADORES Retorna o conteúdo do endereço apontado pelo ponteiro ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se declara uma variável do tipo ponteiro? ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se declara uma variável do tipo ponteiro? tipo *nomeVariávelPonteiro; ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se declara uma variável do tipo ponteiro? tipo *nomeVariávelPonteiro; O que armazena? ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se declara uma variável do tipo ponteiro? tipo *nomeVariávelPonteiro; O que armazena? O endereço de uma variável. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se declara uma variável do tipo ponteiro? tipo *nomeVariávelPonteiro; O que armazena? O endereço de uma variável. Como é feita a escolha do tipo do ponteiro? ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se declara uma variável do tipo ponteiro? tipo *nomeVariávelPonteiro; O que armazena? O endereço de uma variável. Como é feita a escolha do tipo do ponteiro? Depende da variável apontada pelo ponteiro. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se inicializa uma variável do tipo ponteiro? ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se inicializa uma variável do tipo ponteiro? int , *pa; & ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se inicializa uma variável do tipo ponteiro? int , *pa; & int =, *pa=&; ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se inicializa uma variável do tipo ponteiro? int , *pa; & int =, *pa=&; int =, *ptrAno; & ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Como se inicializa uma variável do tipo ponteiro? int , *pa; & int =, *pa=&; int =, *ptrAno; & ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Entendendo cout << ano << endl; cout << &ano << endl; cout << ptrano << endl; cout << &ptrano << endl; cout << *ptrano << endl; ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Entendendo cout << ano << endl; 1989 cout << &ano << endl; cout << ptrano << endl; cout << &ptrano << endl; cout << *ptrano << endl; ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Entendendo cout << ano << endl; 1989 cout << &ano << endl; 0x22ff74 cout << ptrano << endl; cout << &ptrano << endl; cout << *ptrano << endl; ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Entendendo cout << ano << endl; 1989 cout << &ano << endl; 0x22ff74 cout << ptrano << endl; 0x22ff74 cout << &ptrano << endl; cout << *ptrano << endl; ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Entendendo cout << ano << endl; 1989 cout << &ano << endl; 0x22ff74 cout << ptrano << endl; 0x22ff74 cout << &ptrano << endl; 0x22ff70 cout << *ptrano << endl; ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Entendendo cout << ano << endl; 1989 cout << &ano << endl; 0x22ff74 cout << ptrano << endl; 0x22ff74 cout << &ptrano << endl; 0x22ff70 cout << *ptrano << endl; 1989 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 PONTEIRO para ESTRUTURA ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 PONTEIRO para ESTRUTURA ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução– Aula8 PONTEIRO para ESTRUTURA Acessando um membro ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 PONTEIRO para ESTRUTURA Acessando um membro ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 PONTEIRO e ALOCAÇÃO DINÂMICA ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 1a Sintaxe O significado de cada elemento tipo int/ float/ char/ ... * Sinaliza que a variável é um ponteiro new Aloca a memória dinamicamente tipo do dado. O ponteiro tem o tipo desse dado: int/ float/ char/ ... ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 2a Sintaxe O significado de cada elemento tipo int/ float/ char/ ... * Sinaliza que a variável é um ponteiro new Aloca a memória dinamicamente tipo[...] do dado. O ponteiro tem o tipo desse dado: int/ float/ char/ ... Aloca uma quantidade especificada dentro dos colchetes. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 float *ptF= new float; int *ptI= new int(1989); int *pt= new int[300]; Exemplo 1 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 #include <iostream> #include <cstdlib> using namespace std; int main() { float *ptF= new float; int *ptI= new int(1989); int *pt= new int[3]; *ptF=34.5; *(pt)=34; *(pt+1)=55; *(pt+2)=90; cout<<"\n\nConteudo de pt : "<<pt; cout<<"\tconteudo do endereco apontado: "<<*pt; Exemplo 1 Código 1 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 cout<<"\n\nConteudo de ptI: "<<ptI; cout<<"\tconteudo do endereco apontado: "<<*ptI; cout<<"\n\nConteudo de ptF: "<<ptF; cout<<"\tconteudo do endereco apontado: "<<*ptF; cout<<"\n\nConteudo do vetor\n"; cout<<"\n"<<*pt<<"\t"<<*(pt+1)<<"\t"<<*(pt+2); delete ptF; delete ptI; delete pt; cout<<"\n\n"; system("pause"); } Exemplo 1 Código 2 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 int p, *ptr1, *ptr2; ptr1=&p; *ptr1=1918; ptr2=new int; *ptr2=15; ... ptr1=new int; ptr2=ptr1; *ptr1=1518; ... delete ptr1; delete ptr2; Exemplo 2 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 #include <iostream> #include <cstdlib> using namespace std; int main() { int p, *ptr1, *ptr2; ptr1=&p; *ptr1=1918; ptr2=new int; *ptr2=15; cout<<"\nValores das tres variaveis - p: "<<p<<"\tptr1: "<<*ptr1<<"\tptr2: "<<*ptr2; ptr1=new int; ptr2=ptr1; *ptr1=1518; cout<<"\nValores das tres variaveis - p: "<<p<<"\tptr1: "<<*ptr1<<"\tptr2: "<<*ptr2; delete ptr1; delete ptr2; cout<<"\n\n"; system("pause"); } Código ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 #include <iostream> #include <cstdlib> using namespace std; int main() { int p, *ptr1, *ptr2; ptr1=&p; *ptr1=1918; ptr2=new int; *ptr2=15; cout<<"\nValores das tres variaveis - p: "<<p<<"\tptr1: "<<*ptr1<<"\tptr2: "<<*ptr2; ptr1=new int; ptr2=ptr1; *ptr1=1518; cout<<"\nValores das tres variaveis - p: "<<p<<"\tptr1: "<<*ptr1<<"\tptr2: "<<*ptr2; delete ptr1; delete ptr2; cout<<"\n\n"; system("pause"); } Código ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 #include <iostream> #include <cstdlib> using namespace std; int main() { int p, *ptr1, *ptr2; ptr1=&p; *ptr1=1918; ptr2=new int; *ptr2=15; cout<<"\nValores das tres variaveis - p: "<<p<<"\tptr1: "<<*ptr1<<"\tptr2: "<<*ptr2; ptr1=new int; ptr2=ptr1; *ptr1=1518; cout<<"\nValores das tres variaveis - p: "<<p<<"\tptr1: "<<*ptr1<<"\tptr2: "<<*ptr2; delete ptr1; delete ptr2; cout<<"\n\n"; system("pause"); } Código ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 #include <iostream> #include <cstdlib> using namespace std; int main() { int p, *ptr1, *ptr2; ptr1=&p; *ptr1=1918; ptr2=new int; *ptr2=15; cout<<"\nValores das tres variaveis - p: "<<p<<"\tptr1: "<<*ptr1<<"\tptr2: "<<*ptr2; ptr1=new int; ptr2=ptr1; *ptr1=1518; cout<<"\nValores das tres variaveis - p: "<<p<<"\tptr1: "<<*ptr1<<"\tptr2: "<<*ptr2; delete ptr1; delete ptr2; cout<<"\n\n"; system("pause"); } Código ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 #include <iostream> #include <cstdlib> using namespace std; int main() { int p, *ptr1, *ptr2; ptr1=&p; *ptr1=1918; cout<<"\nEnderecos - p: "<<&p<<"\t\tptr1: "<<&ptr1<<"\t\tptr2: "<<&ptr2; ptr2=new int; *ptr2=15; cout<<"\n\nConteudo de ptr2: "<<ptr2<<"\tconteudo do endereco apontado: "<<*ptr2; cout<<"\n\nConteudo de p: "<<p; cout<<"\nconteudo do endereco apontado por ptr1: "<<*ptr1; cout<<"\nconteudo do endereco apontado por ptr2: "<<*ptr2; ptr1=new int; ptr2=ptr1; *ptr1=1518; cout<<"\n\nConteudo de ptr1: "<<ptr1<<"\tconteudo de ptr2: "<<ptr2; cout<<"\n\nConteudo de p: "<<p; cout<<"\nconteudo do endereco apontado por ptr1: "<<*ptr1; cout<<"\nconteudo do endereco apontado por ptr2: "<<*ptr2; delete ptr1; delete ptr2; cout<<"\n\n"; system("pause"); } Código ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Opção 1 Opção 2 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Opção 3 Opção 4 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Opção 5 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 #include <iostream> #include <iomanip> using namespace std; int main () { int op, n, x, f1,f2,f3; f1=f2=f3=0; float *alunos, soma=0, media; do { system("cls"); system("color fc"); cout<<"\n\n~ ~ ~ Alocacao Dinamica ~ ~ ~"; cout<<"\n~ ~"; cout<<"\n~ 1- insere numero de alunos ~"; cout<<"\n~ 2- Insere notas ~"; Código 1 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 cout<<"\n~ 3- Calcula media da turma ~"; cout<<"\n~ 4- Exibe ~"; cout<<"\n~ 5-Sai ~"; cout<<"\n~ Opcao: ~"; cout<<"\n~ ~"; cout<<"\n~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~\n"; cin>>op; system("cls"); system("color 0e"); switch(op) { case 1:cout<<"\nDigite numero de alunos: "; cin>>n; alunos=new float[n]; if(alunos==0) { cout<<"\nNao foi possivel fazer Alocacao\n"; return 1; } f1=1; break; Código 2 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 case 2:if(f1==1) { for(x=0; x<n; x++) { cout<<"\nDigite nota: "; cin>>alunos[x]; } f2=1; } else cout<<"\nVoce nao determinou a quantidade\n"; break; case 3:if(f2==1) { for(soma=alunos[0], x=1; x<n; x++) soma+=alunos[x]; media=soma/n; cout<<"\nMedia Calculada\n\n"; f3=1; } else cout<<"\nVoce pulou alguma(s) etapa(s)\n"; break; Código 3 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 case 4:if(f3==1) { cout<<"\nRelacao da Notas\n"; for(x=0; x<n; x++) cout<<"\n"<<setw(3)<<x+1<<" - "<<alunos[x]; cout<<"\n\nMedia da Turma: “; cout<< setprecision(3)<<media; } else cout<<"\nVoce pulou alguma(s) etapa(s)\n"; break; case 5:cout<<"\nFim da alocacao Dinamica"; delete []alunos; alunos=0; break; default:cout<<"\nOpcao Invalida\n"; } cout<<"\n\n"; system("pause"); } while(op !=5); return 0;} Código 4 ESTRUTURADE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Declara com ponteiro e usa como matriz? float *alunos,...; cin>>alunos[x]; ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Vamos aprender sobre a estreita relação entre ponteiros e matrizes. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 A estreita relação entre PONTEIROS e MATRIZES. Suponha uma variável ponteiro do tipo int, de nome ptrAno e de tamanho 4. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Toda vez que usarmos a expressão ptrAno + 1, estaremos dizendo que o ponteiro irá se deslocar de 4 posições porque é o que o tipo ocupa. A estreita relação entre PONTEIROS e MATRIZES. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Se recordarmos o significado do índice de uma matriz (deslocamento do endereço base), perceberemos que tem o mesmo significado. Toda vez que usarmos a expressão ptrAno + 1, estaremos dizendo que o ponteiro irá se deslocar de 4 posições porque é o que o tipo ocupa. A estreita relação entre PONTEIROS e MATRIZES. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 A estreita relação entre PONTEIROS e MATRIZES. Sendo assim, uma variável do tipo ponteiro poderá ser tratada como vetor e vice-versa. Para que posamos armazenar um valor usando cin>> e ponteiro, faremos: ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 cin>>*(alunos+x); seria equivalente à cin>>alunos[x]; A estreita relação entre PONTEIROS e MATRIZES. Sendo assim, uma variável do tipo ponteiro poderá ser tratada como vetor e vice-versa. Para que posamos armazenar um valor usando cin>> e ponteiro, faremos: ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 1a parte ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 As Listas Encadeadas podem ser: Encadeamento Simples – cada nó é ligado por um ponteiro, permitindo que ela seja percorrida(cruzada) do primeiro ao último elemento. Encadeamento duplo – cada nó é ligado por dois ponteiros. Esse tipo de lista permite um cruzamento igual ao da Lista Simples, mas acrescenta a possibilidade da lista ser percorrida(cruzada) de trás para frente. Encadeadas circulares – onde o último nó é ligado ao primeiro, significando que não existe NULL. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Listas de encadeamento simples, normalmente chamadas simplesmente de Listas Encadeadas, são compostas de elementos individuais, cada um ligado por um único ponteiro. Cada elemento consiste de duas partes: um membro de dados e um ponteiro.(LOUDON, K, 2000, p.56) ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Se olharmos para este nó, poderemos entendê-lo como sendo uma estrutura, visto que ele é formado por dois tipos diferentes, sendo um, necessariamente, ponteiro. A lista é formada por nós ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 O ponteiro aponta para um nó. Logo, ele tem que ser do mesmo tipo que o nó. Uma estrutura? Como vou poder definir o tipo de um membro como sendo uma estrutura que está sendo definida e que esse membro faz parte dessa estrutura? Só pesquisando no Drozdek. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Você tem razão! Veja o que ele diz: “Essa circularidade, no entanto, é permitida em C++”. (DROZDEK, A, 2002, p.68) ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 1) Definindo a struct ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 1) Definindo a struct ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 2) Criando nó ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 2) Criando nó ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 2) Criando nó 3) Atribuindo valores aos membros ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 2) Criando nó 3) Atribuindo valores aos membros ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 4) Exibindo ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 4) Exibindo ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 4) Exibindo 5) Liberando ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Criando uma lista de um nó 4) Exibindo 5) Liberando ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 #include <iostream> #include <cstdlib> using namespace std; struct nodo { int info; nodo *link; }; int main() { nodo* no=new nodo; //criando nó no->info=23; //atribuindo (*no).info=23; no->link=NULL; cout<<"\nValor do no: "<< no->info; delete no; //liberando no=0; //pelo que falamos cout<<"\n\n"; system("pause"); } Código ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 A Aula 8 foi dividida em duas partes: Alocação Dinâmica e início de Listas Encadeadas. Na Aula 9, finalizarei Listas encadeadas e apresentarei Pilha Dinâmica e Fila Dinâmica. ESTRUTURA DE DADOS Alocação Dinâmica / Listas Encadeadas - Introdução – Aula8 Resumindo
Compartilhar