Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
h"
// retorna um novo no
no *lista::inserir(lista *&l, int &valor){
int novo_valor;
std::cout << "Valor> ";
std::cin >> novo_valor;
tmp->v = novo_valor;
// retorna um novo no
void lista::novovalor(lista *&l){
int novo_valor;
std::cout << "Valor> ";
std::cin >> novo_valor;
l->inserir(l, novo_valor);
int n;
tmp = l->inicio;
while (tmp){
if( tmp->v != n){
tmp = tmp->proximo;
continue;
}
no *apagando = tmp;
if (apagando == l->inicio){ // primeiro ponto da lista
if( l->tamanho == 1){ // um unico no na lista
free(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 final
l->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;
}
}
tmp = l->inicio;
//lista [a]<->[c]<->[a]<->[d]<->[x]<->[c]<->[b]<->[a]<->[k]<->[e]
//listar auxiliar [a]<->[a]<->[a]<->[c]<->[c]<->[d]<->[e]...
switch(opcao){
case 1: l->novovalor(l);break;
case 2: l->remover(l);break;
case 3: l->listar(l);break;
case 4: l->ordenar(l);break;
case 5: break;
default: std::cout << "Opcao Invalida> ";
}
return opcao;
}
int main(){