Verkettete Liste kopieren



  • Hallo.

    Ich muss eine Funktion schreiben, die eine Liste an einer bestimmten teilt und daraus zwei neue Liste macht. Diese Funktion hätte ich auch. Ich habe dazu append und index_of benutzt. Allerdings wird dadurch doch die Ausgangsliste verändert, oder? Das darf aber nicht passieren. Also dachte ich, ich könnte eine Kopie der Ausgangsliste erstellen und diese dann durch meine Funktion teilen. Jetzt kommt aber mein Problem, geht das Kopieren überhaupt? Und wenn ja, wie implementiere ich das?

    Meine Funktion sieht bisher so aus:

    void split_list(list_type *list, int value, list_type *before, list_type *after){ //in der main-Funktion müssen vor dem Funktionsaufruf die beiden Listen before und after intinitialisiert und Speicherplatz bereitgestelltwerden
    
    	 int i;
    	 i=index_of(list, value);
    
    	 int j;
    
    	 element_type *el;
    	 el=list->head;
    
    	 for(j=0; j<i; i++){
    		 append(before, element_at(list, j)); //Anfügen aller Elemente vor dem eingegeben Wert an die Liste before 
    	 }
    
    	 while(el!=NULL){
    		 append(after, element_at(list, i)); //Anfügen alle Elemente nach dem eingegebenen Wert, einschließlich dieses Wertes
    		 i++;
    		 el=el->next;
    	 }
    	 return;
     }
    


  • Verschiebt das ma einer nach C++ ...


  • Administrator

    Sieht eher nach C aus.

    @mathestudent,
    Falls du doch ins C++ wolltest, einfach motzen, dann kümmern sich die C Moderatoren drum.

    Grüssli



  • Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum C (C89 und C99) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Um die Liste zu kopieren, müsstest du alle Listenelemente kopieren bzw. ihre enthaltenen Datenwerte in eine zweite Liste übernehmen.
    Aber die interessantere Frage ist wohl, in welchem Zusammenhang du diese Funktion eigentlich nutzen willst und was der Sinn dahinter sein soll.


Anmelden zum Antworten