Verkettete Liste



  • Hallo,

    ich bin noch nicht allzu lange dabei, programmieren zu lernen und bin nun auf ein Problem gestoßen, dass ich nicht lösen kann. Wie im Titel beschrieben, geht es um eine verkette Liste, die ich mit Methoden der OOP realisieren soll.
    Eine Aufgabe lautete nun, einen Knoten an einer Bestimmten Stelle einzufügen.
    So sieht der Abschnitt in der Testdatei dazu aus:

    Linked_list *a = new Linked_list("a");
    Linked_list *b = new Linked_list("b");
    Linked_list *c = new Linked_list("c");
    
    Linked_list *start;
    start = b->insert_at_index(1, c);
    start = b->insert_at_index(0, a);
    

    Ich scheine aber die Funktionsweise von Zeigern und einer Liste noch nicht richtig verstanden zu haben, weil mir nicht genau klar ist, wie ich denn nun einen Knoten an die zweite Stelle einfügen soll, wenn ich gar keinen Start übergebe, dessen next-Zeiger ich auf den nächsten Knoten zeigen lassen kann.
    Kann mir jemand dabei weiterhelfen?



  • Du hast eine Liste, die mit b startet und fügst a dort ein. Wozu brauchst du dafür ein weiteres Listenelement?



  • Zeig mal, wie Deine Klasse Linked_list aussieht, welche Member sie hat.



  • So sieht meine Klasse aus:

    #include<string>
    #include <iostream>
    
    class Linked_list{
    public:
    	std::string Element;
    	Linked_list *naechster;
    	Linked_list(std::string xa){
    		Element = xa;
    		naechster = NULL;
    	}
    	void set(std::string xb){
    		Element = xb;
    	}
    	std::string get(){
    		return Element;
    	}
    	Linked_list next(){
    	return *naechster;
    	}
    	Linked_list *insert_at_index(unsigned int Index, Linked_list* Knoten_neu){}
    };
    


  • Deine Linked_list ist keine verkettere Liste, sondern eher ein Linked_List_Node.

    Was insert_at_index tun soll, ist mir unklar. Es gehört meiner Meinung nach auch nicht zu einem Node, sondern zu der Liste selbst. Du solltest vermutlich die Funktionen der LinkedList von der Node separieren.

    Also ne einfache struct Node mit dem next-Pointer und dem String und eine Klasse List, die ein Node* first_element enthält, das auch nullptr sein kann, wenn die Liste leer ist.


Anmelden zum Antworten