insert funktion für eine linked list



  • hallo leutz,

    ich hab jetzt schon ne weile an der insertfunktion für meine linked list rumexperimentiert aber irgendwie verschwinden immer mal ein paar elemente oder sie ist am ende leer, auf jedenfall funtzt irgendwas beim sortierten einfügen noch nicht richtig. Hier mal der Code:

    void insert(Element** beg, Element* s)
    {	
    	if(*beg==0)
    	{
    		*beg=s;
    		return;
    	}
    
    	if(exists(*beg, s))//prüft ob schon vorhanden
    		return;
    
    	Element* tmp=*beg;
    	Element* p;
    	while(tmp->next)
    	{
    		if(comp(tmp, s)==1)//gleich wie bei strcmp, also '1' bedeutet tmp ist größer
    		{
    			p=prev(*beg, tmp);//hol sich das element vor tmp aus der liste
    			break;
    		}
    		tmp=tmp->next;
    	}
    
    	if(p && tmp->next)//das neue element hat einen vorgänger und einen nachfolger ? (also vor und nach tmp kommt noch was ?)
    	{
    		p->next=s;//ja: dann wirds dazwischen gelinkt
    		s->next=tmp;
    	}
    	else if(tmp)
    	{
    		s->next=tmp;//nein: nur dahinter, also wird kommt s an den anfang
    		*beg=s;
    	}
    	else if(p);
    	{
    		tmp->next=s;//nein: s kommt ans ende
    	}	
    }
    

    wichtig bei der struktur 'Element' ist eigentlich nur ein char array, das mit einem andern per strcmp verglichen wird. Und falls jemand noch ne Möglichkeit weiss den Code abzukürzen wärs natürlich auch gut.

    Vielen Dank euch schonmal im voraus


Anmelden zum Antworten