Ma wieder ein problem mit meiner Liste



  • Hey...

    habe gestern verzweifelt versucht meine verkettete Liste nach
    dem Alphabet zu sortieren...

    hab mir gedacht ich vergleich immer zwei Elemente mit strcmp().
    Wenn das erste der beiden Elemente größer ist, sollen die beiden
    Elemente ihren Platz tauschen...und das dann so lang bis alles
    sortiert ist...aber ich bekomme es nicht hin.

    Hab keine Ahnung wie ich meine Pointer setzen soll das des richtig
    funktioniert...hoffe ihr könnt mir da weiter Helfen.

    Hier meine Daten Struktur:

    struct DATEN
    
    {
    	char tag[3];
    	char Titel[31];
    	char Interpret[31];
    	char Album[31];
    	char Jahr[4];
    	char Track[31];
    	char Genre[31];
    	char Kommentar[31];
    
    };
    

    und meine Funktion zum Sortieren:

    void sort(struct listenkopf *head)
    
    {
    
    	struct listenelement *element;
    	struct listenelement *element2;
    	struct listenelement *hilfsptr;
    
    	char *dat1;
    	char *dat2;
    
    	element=head->ersteselement;
    	element2=element->next;
    	hilfsptr=head->ersteselement;
    
    	if(element!=0)
    	{
    		do
    		{
    			dat1=element->daten->Titel;
    			dat2=element2->daten->Titel;
    
    			if(strcmp(dat1,dat2)>0)
    			{
    
    			//Hier soll normal getauscht
    			//werden. Gibt aber ne Endlos
    			//schleife...HILFE!!
    
    			element->next=element2->next;	
    			element2->next=element;			
    			hilfsptr->next=element2;		
    			}
    			else
    			{
    			element=element->next;
    			element2=element2->next;
    			}
    		}
    		while(element || element2 != 0);
    
    	}
    	else
    	{
    		printf("Es ist nur ein Element vorhanden!");
    	}
    
    }
    


  • hab meinen Fehler schon gefunden...funktioniert jetzt.


Anmelden zum Antworten