Ir para conteúdo
Fórum Script Brasil
  • 0

Ordenar lista simplesmente encadeada


jonathanbr

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...