Boa tarde,meu problema é o seguinte estou com problemas para fazer a ordenação da minha lista em ordem crescente exemplo 1,2,3 (sempre tive problemas com isso) segue o codigo:
#include <iostream>
#include <cstdlib>
using namespace std;
struct no {
int valor;
struct no *prox;
};
struct no *inicio;
void iniciaLista (){
inicio = NULL;
}
bool testaListaVazia (){
return (inicio == NULL);
}
//Primeira Função -- Inserção
int insereLista(int dado){
struct no *pt;
pt = new struct no;
pt -> valor = dado;
pt -> prox = NULL;
if(testaListaVazia()){
inicio = pt;
}else {
pt -> prox = inicio;
inicio = pt;
}
return 1;
}
void viewInsere(){
int t,x;
cout<<"\nDigite um numero:";
cin>> t;
x = insereLista(t);
if (x!=1) {
cout<<"Erro na insercao";
}else {
cout<<"\nElemento "<<t;
cout<<" inserido com sucesso!";
}
}
void imprimeLista(){
struct no *pt;
if(testaListaVazia()){
cout<<"A Lista estah vazia...";
return;
}
cout<<"\n inicio";
pt = inicio;
while(pt!=NULL){
cout<<" -> "<<pt->valor;
pt = pt -> prox;
}
cout<<" -||\n";
}
struct no *buscaLista (int dado){
struct no *pt;
if(testaListaVazia()){
return NULL;
}
pt = inicio;
while (pt != NULL){
if(pt->valor == dado){
return pt;
}
pt = pt-> prox;
}
return NULL;
}
void viewBusca(){
struct no *pt;
int x;
cout<<"Qual elemento quer buscar? ";
cin>>x;
pt = buscaLista(x);
if(pt != NULL){
cout<<"Achei o "<<pt->valor;
cout<<" no endereco "<<pt;
}else{
cout<<"Elemento não esta a lista";
}
}
bool alteraElementoLista(int dado, int novo){
struct no *pt;
pt = buscaLista(dado);
if(pt == NULL){
return false;
}else{
pt -> valor = novo;
return true;
}
}
void viewAltera(){
int elem, novo;
cout <<"Qual elemento deve sair da lista?";
cin >> elem;
cout <<"E qual deve entrar no lugar?";
cin >> novo;
if(alteraElementoLista(elem, novo)){
cout<<"O elemento " << elem << " foi trocado pelo "<< novo;
}else{
cout<<"não foi possivel fazer a alteracao...";
}
}
bool excluirElementoLista(int dado){
struct no *pt, *ant;
pt = buscaLista(dado);
if(pt == NULL)
return false;
ant = inicio;
if(ant == pt){
inicio=pt->prox;
}else{
while(ant ->prox!=pt){
ant=ant->prox;
}
ant-> prox = pt-> prox;
}
delete pt;
return true;
}
void viewExcluir(){
int elem;
cout<<"Qual elemento deve ser excluido? ";
cin>>elem;
if(excluirElementoLista(elem)){
cout<<"O elemento "<<elem<<" foi excluido...";
}else{
cout<<"não foi possivel fazer a exclusao...";
}
}
int main(int argc, char* argv[]){
int x, op;
iniciaLista();
do {
cout << "\n\n1 - Testa Lista Vazia";
cout << "\n2 - Incluir";
cout << "\n3 - Listar";
cout << "\n4 - Buscar";
cout << "\n5 - Alterar";
cout << "\n6 - Excluir";
cout << "\n7 - Sair";
cout << "\n\nDigite sua opcao: ";
cin >> op;
switch (op){
case 1: if (testaListaVazia()){
cout << "\n A fila estah Vazia!\n";
}else{
cout << "\n A fila não estah Vazia!\n";
}break;
case 2: viewInsere();
break;
case 3: imprimeLista();
break;
case 4: viewBusca();
break;
case 5: viewAltera();
break;
case 6: viewExcluir();
break;
case 7:
break;
default: cout << "Opcao invalida . . .\n\n";
}
} while (op != 7);
return 0;
}
Pergunta
jonathanbr
Boa tarde,meu problema é o seguinte estou com problemas para fazer a ordenação da minha lista em ordem crescente exemplo 1,2,3 (sempre tive problemas com isso) segue o codigo:
#include <iostream> #include <cstdlib> using namespace std; struct no { int valor; struct no *prox; }; struct no *inicio; void iniciaLista (){ inicio = NULL; } bool testaListaVazia (){ return (inicio == NULL); } //Primeira Função -- Inserção int insereLista(int dado){ struct no *pt; pt = new struct no; pt -> valor = dado; pt -> prox = NULL; if(testaListaVazia()){ inicio = pt; }else { pt -> prox = inicio; inicio = pt; } return 1; } void viewInsere(){ int t,x; cout<<"\nDigite um numero:"; cin>> t; x = insereLista(t); if (x!=1) { cout<<"Erro na insercao"; }else { cout<<"\nElemento "<<t; cout<<" inserido com sucesso!"; } } void imprimeLista(){ struct no *pt; if(testaListaVazia()){ cout<<"A Lista estah vazia..."; return; } cout<<"\n inicio"; pt = inicio; while(pt!=NULL){ cout<<" -> "<<pt->valor; pt = pt -> prox; } cout<<" -||\n"; } struct no *buscaLista (int dado){ struct no *pt; if(testaListaVazia()){ return NULL; } pt = inicio; while (pt != NULL){ if(pt->valor == dado){ return pt; } pt = pt-> prox; } return NULL; } void viewBusca(){ struct no *pt; int x; cout<<"Qual elemento quer buscar? "; cin>>x; pt = buscaLista(x); if(pt != NULL){ cout<<"Achei o "<<pt->valor; cout<<" no endereco "<<pt; }else{ cout<<"Elemento não esta a lista"; } } bool alteraElementoLista(int dado, int novo){ struct no *pt; pt = buscaLista(dado); if(pt == NULL){ return false; }else{ pt -> valor = novo; return true; } } void viewAltera(){ int elem, novo; cout <<"Qual elemento deve sair da lista?"; cin >> elem; cout <<"E qual deve entrar no lugar?"; cin >> novo; if(alteraElementoLista(elem, novo)){ cout<<"O elemento " << elem << " foi trocado pelo "<< novo; }else{ cout<<"não foi possivel fazer a alteracao..."; } } bool excluirElementoLista(int dado){ struct no *pt, *ant; pt = buscaLista(dado); if(pt == NULL) return false; ant = inicio; if(ant == pt){ inicio=pt->prox; }else{ while(ant ->prox!=pt){ ant=ant->prox; } ant-> prox = pt-> prox; } delete pt; return true; } void viewExcluir(){ int elem; cout<<"Qual elemento deve ser excluido? "; cin>>elem; if(excluirElementoLista(elem)){ cout<<"O elemento "<<elem<<" foi excluido..."; }else{ cout<<"não foi possivel fazer a exclusao..."; } } int main(int argc, char* argv[]){ int x, op; iniciaLista(); do { cout << "\n\n1 - Testa Lista Vazia"; cout << "\n2 - Incluir"; cout << "\n3 - Listar"; cout << "\n4 - Buscar"; cout << "\n5 - Alterar"; cout << "\n6 - Excluir"; cout << "\n7 - Sair"; cout << "\n\nDigite sua opcao: "; cin >> op; switch (op){ case 1: if (testaListaVazia()){ cout << "\n A fila estah Vazia!\n"; }else{ cout << "\n A fila não estah Vazia!\n"; }break; case 2: viewInsere(); break; case 3: imprimeLista(); break; case 4: viewBusca(); break; case 5: viewAltera(); break; case 6: viewExcluir(); break; case 7: break; default: cout << "Opcao invalida . . .\n\n"; } } while (op != 7); return 0; }Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.