Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
4Activity
0 of .
Results for:
No results containing your search query
P. 1
Exemplo de Código em C++

Exemplo de Código em C++

Ratings: (0)|Views: 662 |Likes:
Published by camilasan

More info:

Categories:Types, School Work
Published by: camilasan on Nov 24, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as ODT, PDF, TXT or read online from Scribd
See more
See less

12/04/2012

pdf

text

original

 
#include "dados.h"// retorna um novo nono *lista::inserir(lista *&l, int &valor){int novo_valor;std::cout << "Valor> ";std::cin >> novo_valor; //aloca memoria para o novo nono *tmp = new no();tmp->v = novo_valor; //salva o endereco do proximo no - NULL (ta no fim da lista)tmp->proximo = NULL;tmp->anterior = NULL; l->tamanho += 1; //aumentou um no listareturn tmp; //retorna novo no}// retorna um novo novoid lista::novovalor(lista *&l){int novo_valor;std::cout << "Valor> ";std::cin >> novo_valor; l->inserir(l, novo_valor); }void lista::remover(lista *&l){int n; no *tmp = new no(); tmp = l->inicio; std::cout << "Excluir Valor> ";std::cin >> n;while (tmp){if( tmp->v != n){tmp = tmp->proximo;continue;}no *apagando = tmp;
 
if (apagando == l->inicio){ // primeiro ponto da listaif( l->tamanho == 1){ // um unico no na listafree(apagando);l->inicio = NULL;l->fim = NULL;}else{l->inicio = l->inicio->proximo;l->inicio->anterior = NULL;free(apagando);}l->tamanho -= 1;}else if (apagando == l->fim){ // apagando no finall->fim = l->fim->anterior;l->fim->proximo = NULL;free(apagando);l->tamanho -= 1;}else{ // apagando no meio.tmp->anterior->proximo = tmp->proximo;tmp->proximo->anterior = tmp->anterior;free(apagando);l->tamanho -= 1;}tmp = tmp -> proximo;}}void no::apaga_recursivamente(no *&atual){if(atual->proximo){atual->apaga_recursivamente(atual->proximo);}free(atual);}void lista::ordenar(lista *&l){ no *tmp = new no();tmp = l->inicio;lista *ordenada = new lista(); // lista para armazenar a lista originalordenada//lista::lista(&ordenada); //inicia lista ordenada do tipo lista //lista [a]<->[c]<->[a]<->[d]<->[x]<->[c]<->[b]<->[a]<->[k]<->[e]//listar auxiliar [a]<->[a]<->[a]<->[c]<->[c]<->[d]<->[e]... //ordenar a lista em uma lista temporaria.while(tmp){if ( ordenada->inicio == NULL ){ // lista temporaria vazia, inclui vno inicioordenada->inicio = ordenada->inserir(ordenada, tmp->v);ordenada->fim = ordenada->inicio;}else if( tmp->v <= ordenada->inicio->v ){ // novo no é menor que o
 
no inicial, inclui no inicio.no *novo = ordenada->inserir(ordenada, tmp->v);novo->proximo = ordenada->inicio;ordenada->inicio->anterior = novo;ordenada->inicio = novo;}else if( tmp->v >= ordenada->fim->v ){ // novo no é maior que oultimo no, inclui no final.no *novo = ordenada->inserir(ordenada, tmp->v);novo->anterior = ordenada->fim;ordenada->fim->proximo = novo;ordenada->fim = novo;}else{ // novo no ta no meio da lista, procurar onde incluirno *tmp_ordenado = ordenada->inicio;while(tmp_ordenado->proximo != NULL){if (tmp_ordenado->v <= tmp->v && tmp_ordenado->proximo->v >tmp->v){ // o no atual é menor, e o atual->prox é maior. incluir no miodelebreak;}tmp_ordenado = tmp_ordenado -> proximo;}no *novo = inserir(ordenada, tmp->v);novo->proximo = tmp_ordenado->proximo;novo->anterior = tmp_ordenado;novo->proximo->anterior = novo;tmp_ordenado->proximo = novo;}tmp = tmp->proximo;} //imprimindo a lista ordenadano *tmp_ordenado = ordenada->inicio;while(tmp_ordenado){std::cout << tmp_ordenado->v;tmp_ordenado = tmp_ordenado->proximo;} std::cout << " \n "; tmp_ordenado->apaga_recursivamente(ordenada->inicio); // libera memoria}void lista::listar(lista *&l){ int n; //vai listar so onde v == nno *tmp = l->inicio;int posAtual = 1; std::cout << "Listar Valor> ";std::cin >> n;//se entrar com l para listar todos, senao lista so o solicitadoif( n == 'l'){

Activity (4)

You've already reviewed this. Edit your review.
1 hundred reads
1 thousand reads
kernel1987 liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->