Buscar

Estrutura de Dados - Aula 09

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 76 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 76 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 76 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ESTRUTURA DE DADOS
Aula 9 – LISTAS ENCADEADAS – 2a PARTE
PILHA DINÂMICA e FILA DINÂMICA
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
Atenção aos Temas Principais dessa Aula
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
Conteúdo Programático desta aula
 Compreender operaões com Lista Linear
Simplesmente Encadeada;
 Compreender operaões com Pilha Dinâmica;
 Compreender operaões com Fila Dinâmica;
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
Direto ao Assunto
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
2a parte
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
Listas de debates;
Gerenciamento de memória;
Alocação encadeada de arquivos sequenciais na 
tentativa de eliminar a fragmentação externa de um
HD, entre outras.
Aplicações – LISTAS SIMPLESMENTE ENCADEADAS
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
struct nodo
{
int num;
struct nodo *prox;
};
1) Definindo a struct
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
struct nodo
{
int num;
struct nodo *prox;
};
// primeiro nó
nodo *lista=new nodo;
lista->num=23;
lista->prox=NULL;
2) A struct e criação do 1o nó
num prox
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
// segundo nó
lista->prox=new nodo;
lista->prox->num=13;
lista->prox->prox=NULL;
3) Criação do 2o nó
prox
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
// segundo nó
lista->prox=new nodo;
lista->prox->num=13;
lista->prox->prox=NULL;
3) Criação do 2o nó
prox
prox->num prox->prox
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
// terceiro nó
lista->prox->prox=new nodo;
lista->prox->prox->num=15;
lista->prox->prox->prox=NULL;
4) Criação do 3o nó
prox
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
// terceiro nó
lista->prox->prox=new nodo;
lista->prox->prox->num=15;
lista->prox->prox->prox=NULL;
prox->proxprox
4) Criação do 3o nó
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
// terceiro nó
lista->prox->prox=new nodo;
lista->prox->prox->num=15;
lista->prox->prox->prox=NULL;
prox->prox->num prox->prox->prox
prox->proxprox
4) Criação do 3o nó
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
// quarto nó
lista->prox->prox->prox=new nodo;
lista->prox->prox->prox->num=18;
lista->prox->prox->prox->prox=NULL;
prox
5) Criação do 4o nó
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
// quarto nó
lista->prox->prox->prox=new nodo;
lista->prox->prox->prox->num=18;
lista->prox->prox->prox->prox=NULL;
prox->proxprox
5) Criação do 4o nó
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
// quarto nó
lista->prox->prox->prox=new nodo;
lista->prox->prox->prox->num=18;
lista->prox->prox->prox->prox=NULL;
prox->prox->proxprox->proxprox
5) Criação do 4o nó
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
// quarto nó
lista->prox->prox->prox=new nodo;
lista->prox->prox->prox->num=18;
lista->prox->prox->prox->prox=NULL;
prox->prox->proxprox->proxprox
prox->prox->prox->num prox->prox->prox->prox
5) Criação do 4o nó
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
#include <iostream>
#include <cstdlib>
using namespace std;
struct nodo
{
int num;
struct nodo *prox;
};
int main()
{
//primeiro nó
nodo *lista=new nodo;
lista->num=23;
lista->prox=NULL;
Código
1
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
//segundo nó
lista->prox=new nodo;
lista->prox->num=13;
lista->prox->prox=NULL;
//terceiro nó
lista->prox->prox=new nodo;
lista->prox->prox->num=15;
lista->prox->prox->prox=NULL;
//quarto nó
lista->prox->prox->prox=new nodo;
lista->prox->prox->prox->num=18;
lista->prox->prox->prox->prox=NULL;
Código
2
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
//listando um a um
cout<<"\nValor do 1o no: "<<lista->num;
cout<<"\nValor do 2o no: "<<lista->prox->num;
cout<<"\nValor do 3o no: "<<lista->prox->prox->num;
cout<<"\nValor do 4o no: "<<lista->prox->prox->prox->num;
//liberando
delete lista; lista=0;
cout<<"\n\n";
system("pause");
}
Código
3
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
struct nodo
{
int num;
struct nodo* prox;
};
//criando no1
nodo* no1=new nodo;
no1->num=23;
no1->prox=NULL;
//criando no2
nodo* no2= new nodo;
no1->prox=no2;
no2->num = 13;
no2->prox = NULL;
Código
1
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
//exibindo
cout<<"\nValor do no1: "<<no1->num;
cout<<"\nValor do no2: "<<no2->num;
cout<<"\n\n\nEndereco de no1: "<<no1;
cout<<"\nEndereco de no2: "<<no2;
cout<<"\n\n\nEndereco apontado por no1: "<<no1->prox;
cout<<"\nEndereco apontado por no2: "<<no2->prox;
//liberando
delete no1; no1=0;delete no2; no2=0;
cout<<"\n\n";
system("pause");
}
Código
2
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
struct nodo
{
int num;
struct nodo* prox;
};
//criando no1
nodo* no1=new nodo;
no1->num=23;
no1->prox=NULL;
//criando no2
nodo* no2= new nodo;
no2->num = 13;
no2->prox = no1;
Código
1
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
//exibindo
cout<<"\nValor do no1: "<<no1->num;
cout<<"\nValor do no2: "<<no2->num;
cout<<"\n\n\nEndereco de no1: "<<no1;
cout<<"\nEndereco de no2: "<<no2;
cout<<"\n\n\nEndereco apontado por no1: "<<no1->prox;
cout<<"\nEndereco apontado por no2: "<<no2->prox;
//liberando
delete no1; no1=0;delete no2; no2=0;
cout<<"\n\n";
system("pause");
}
Código
2
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
struct nodo
{
int info;
struct nodo *prox;
};
Definido a struct
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
void exibe(nodo *ptr)
{
int conta = 1;
cout<<"\nListando\n";
while(ptr)
{
cout<<"\n"<<conta<<"- "<<ptr->info;
conta++;
ptr=ptr->prox;
}
}
Exibe lista
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo* insereFrente(nodo *ptr, int valor)
{
nodo *temp = new nodo;
if(!temp)
{
cout<<"\nNao foi possivel fazer Alocacao\n";
system("pause");
exit (1);
}
temp->info = valor;
temp->prox = ptr;
return temp;
}
Insere nó na frente
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo* insereFim(nodo *ptr, int valor)
{
nodo *novo, *aux;
novo = new nodo;
if(!novo)
{
cout<<"\nNao foi possivel fazer Alocacao\n";
system("pause"); exit (1);
}
novo->info = valor;
novo->prox = NULL;
if (!ptr) ptr = novo;
else
{
aux = ptr;
while (aux->prox) aux = aux->prox;
aux->prox = novo;
}
return ptr;
}
Insere nó ao final
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
int buscaSequencial(nodo *ptr, int valor,int &pos)
{
while (ptr)
{
pos++;
if (ptr->info == valor)
return 1;
ptr = ptr->prox;
}
return 0;
}
Busca Sequencial
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
void substituiNo(nodo *ptr, int posicao, int novoValor)
{
int conta = 1;
while (conta != posicao )
{
ptr = ptr ->prox;
conta++;
}
ptr->info = novoValor;
}
Substitui valor do Nó
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
int contaNos(nodo *ptr)
{
int conta = 0;
while (ptr)
{
conta++;
ptr = ptr->prox;
}
return conta;
}
Conta os nós
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo *removeFrente(nodo *ptr)
{
nodo *aux;
aux = ptr;
ptr = ptr->prox;
delete aux;
return ptr;
}
Remove nó da frente
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo* removeFim(nodo *ptr)
{
nodo * aux, *ultimo;
if (!ptr->prox)
{ delete ptr; ptr = NULL; return ptr; }
else
{
aux = ptr;
//aux caminha até apontar para o penúltimo nó
while (aux->prox->prox ) aux = aux->prox;
ultimo = aux->prox; delete ultimo;
aux->prox = NULL;
return ptr;
}
}
Remove nó do final
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
O alvo é procurar o penúltimo para que possa remover
o último.
Por essa razão, a linha aux->prox->prox estará
sempre olhando o próximo do próximo porque se ele
não existir, significa que aux->prox é o último.
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
void libera(nodo *ptr)
{
delete ptr; ptr=0;
}
Libera
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
Como a Pilha e a Fila são casos particulares da Lista, não
introduzi nenhuma outra função. Todas as funções são as
que foram as usadas na Lista, respeitando as
características das estruturas.
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo *insereFrente(nodo *, int );
Insere na Pilha
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo *insereFrente(nodo *, int );
Insere na Pilha
nodo *removeFrente(nodo *);
Remove da Pilha
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
void exibeTopo(nodo *ptr)
{ 
if(!ptr)
cout << "\n\nPilha vazia\n";
else 
cout<<"\nValor do elemento do topo: "<<ptr->info;
} 
Exibe elemento do topo
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo *insereFim(nodo *, int );
Insere na Fila
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo *insereFim(nodo *, int );
Insere na Fila
nodo *removeFrente(nodo *);
Remove da Fila
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
void exibePrimeiro(nodo *ptr)
{ 
if(!ptr)
cout << "\n\nFila vazia\n";
else 
cout<<"\nValor do primeiro elemento da Fila: "<<ptr->info;
} 
Exibe primeiro elemento
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
Resumindo
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
&
Menu Lista Simplesmente Encadeada
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
system("cls");
switch(op)
{ 
case 1:cout<<"\nInserir na frente: ";
cin>>valor;
lista = insereFrente(lista, valor);
break;
case 2:cout<<"\nInserir no final: ";
cin>>valor;
lista = insereFim(lista, valor);
break;
case 3:if(!lista)
cout << "\n\nNada a remover. Lista vazia\n";
else 
{
lista=removeFrente(lista); 
cout<<"\n\nPrimeiro elemento da Lista removido\n"; 
}
break; 
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
case 4:if(!lista)
cout << "\n\nNada a remover. Lista vazia\n";
else 
{
lista=removeFim(lista); 
cout<<"\n\nUltimo elemento da Lista removido\n"; 
}
break; 
case 5:if(!lista)
cout << "\n\nFILA vazia\n";
else 
exibe(lista);
break; 
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
case 6:if(!lista)
cout<<"\nFila vazia\n";
else
{
cout<<"\nQual a posicao do No? ";
cin>>pos;
while(pos>contaNos(lista))
{
cout<<"\nPosicao Invalida\n";
cout<<"\nQual a posicao do No? ";
cin>>pos;
} 
cout<<"\nQual o novo valor? ";
cin>>nvalor;
substituiNo(lista, pos, nvalor);
cout<<"\nValor substituido\n";
} 
break; 
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
case 7:if(!lista)
cout << "\n\nLista vazia\n";
else 
cout<<"\nTotaL de nos: "<<contaNos(lista);
break; 
case 8:if(!lista)
cout << "\n\nLista vazia\n";
else 
{
cout<<"\nQual o valor de procura? ";
cin>>valor; 
posicao=0; 
resp=buscaSequencial(lista, valor, posicao);
if(resp==1)
cout<<"\nEncontrei na posicao "<<posicao<<"\n";
else
cout<<"\nNao Encontrei\n";
} 
break; 
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
case 9:if(lista)
cout<<"\nTem elementos na Lista\n";
else{ 
libera(lista);
cout<<"\nLiberando Memoria";
} 
break;
case 10: cout<<"Fechando Lista Encadeada\n"; 
break; 
default:cout<<"\nOpcao Invalida\n";
}
cout<<"\n\n"; 
system("pause");
} while(op != 10);
return 0;
} 
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo* insereFrente(nodo *ptr, int valor)
{
nodo *temp = new nodo;
if(!temp)
{
cout<<"\nNao foi possivel fazer Alocacao\n";
system("pause");
exit (1);
} 
temp->info = valor; 
temp->prox = ptr; 
return temp; 
}
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo* insereFim(nodo *ptr, int valor)
{
nodo *novo, *aux;
novo = new nodo;
if(!novo)
{
cout<<"\nNao foi possivel fazer Alocacao\n";
system("pause"); exit (1);
}
novo->info = valor;
novo->prox = NULL;
if (!ptr) ptr = novo;
else
{ 
aux = ptr;
while (aux->prox) aux = aux->prox;
aux->prox = novo;
}
return ptr;
}
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
void exibe(nodo *ptr)
{ 
int conta = 1;
cout<<"\nListando\n";
while(ptr)
{
cout<<"\n"<<conta<<" - "<<ptr->info;
conta++;
ptr=ptr->prox;
}
} 
nodo *removeFrente(nodo *ptr)
{
nodo *aux;
aux = ptr;
ptr = ptr->prox;
delete aux;
return ptr;
}
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
nodo* removeFim(nodo *ptr)
{
nodo * aux, *ultimo;
if (!ptr->prox) 
{ delete ptr; ptr = NULL; return ptr; }
else 
{
aux = ptr;
//aux caminha até apontar para o penultimo nó
while (aux->prox->prox ) 
aux = aux->prox; 
ultimo = aux->prox;
delete ultimo;
aux->prox = NULL;
return ptr;
}
} 
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
void substituiNo(nodo *ptr, int posicao, int novoValor)
{ 
int conta = 1;
while (conta != posicao )
{
ptr = ptr ->prox;
conta++;
}
ptr->info = novoValor;
}
int contaNos(nodo *ptr)
{
int conta = 0;
while (ptr)
{
conta++;
ptr = ptr->prox;
}
return conta;
}
ESTRUTURA DE DADOS
LISTAS ENCADEADAS – 2a PARTE/ PILHA DINÂMICA e FILA DINÂMICA – Aula9
int buscaSequencial(nodo *ptr, int valor,int &pos)
{
while (ptr)
{ 
pos++;
if (ptr->info == valor)
return 1;
ptr = ptr->prox;
}
return 0; 
}
void libera(nodo *ptr)
{
delete ptr; ptr=0;
}

Outros materiais