Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] algoritmo di ordinamento lista

    scusate ma non ho inserito il linguaggio di programmazione e ora non compare nell'oggetto...

    devo fare un a funzione per ordinare un alista concatenata del tipo

    codice:
    struct nodo
     {
       int inf;               // parte informazione del nodo (un solo dato)
       struct nodo *psucc;    // dato di tipo puntatore alla struttura stessa
                              // contiene l'indirizzo (puntatore) all'elemento
                              // successivo della struttura
    // nodo *psucc;           // dichiarazione semplificata alternativa
     };
    
    nodo *tdl = NULL;       // puntatore al primo elemento della lista
    nodo *pnuovo = NULL;    // puntatore del nuovo nodo creato
    nodo *p = NULL;         // puntatore di comodo per scorrere la lista
    nodo *pprec = NULL;     // puntatore del nodo precedente a quello attuale
                            // (per inserimenti ed estrazioni intermedie)
    come potrebbe essere un codice per ordinare questa lista?

  2. #2

    [C++] Ordinamento Lista

    HO provato con questo ma mi da un errore

    codice:
    void OrdinamentoLista(void)
    	{
    	if(ListaVuota()==true)
    		{
    		p=tdl;
    		p2=p->psucc;
    		while(p->psucc!=NULL)//fino alla fine
    			{
    			while(p2->psucc!=NULL)
    				{
    				p2=p->psucc;
    				if(p->inf>p2->inf)
    					{
    					temp=p;
    					p=p2;
    					p2=temp;
    					}
    				p2=p2->psucc;
    				}
    			p=p->psucc;
    			}
    		}
    	return;
    	}
    l'errore è che p2->psucc
    psucc errore: impossibile accedere a una posizione di memoria non valida

    dove sbaglio e come rimedio?

  3. #3
    ho capito, praticamente non posso arrivare fino all'utimo elemento della lista altrimenti p2->psucc va fuori....
    quindi, come faccio ad andare fino al nodo prima dell'ultimo?

  4. #4
    Dovrebbe bastare fare p->psuc->psuc != NULL. Altrimenti sapendo tu ora quando è l'ultimo puoi fare un if e all'ultimo metti un break

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.