Mein Problem mit QT



  • Hallo,

    ich habe zwei Aufgaben zu lösen, und mit dem Studienheft komme ich nicht weiter, ich brauche bitte Hilfe.

    1. Ändern Sie die einfach verkettete Liste aus dem Studienheft so, dass das Ende der Liste nicht bei jedem Anhängen neu ermittelt werden muss, sondern in einem eige- nen Zeiger gespeichert wird.

    Dieser Zeiger für das Listenende soll dann beim Anhängen neuer Elemente benutzt werden.

    Zwei kleine Hilfestellungen zur Lösung:

    • Sie müssen dafür sorgen, dass das Listenende nach jedem Anhängen ermittelt wird und auch an die Funktion main() zurückgeliefert wird. Dazu müssen Sie die Funktion zum Anhängen entsprechend verändern.

    • Als Argument beim Anhängen übergeben Sie dann nicht mehr den Listenan- fang, sondern das Listenende.

    2. Erweitern Sie die einfach verkettete Liste aus dem Studienheft so, dass sie zu einer doppelt verketteten Liste wird. Ergänzen Sie das Programm außerdem um eine Funktion, die die Liste rückwärts – also vom letzten Element beginnend bis zum An- fang – ausgibt.

    Auch zu dieser Aufgabe zwei Hilfestellungen:

    • Sie benötigen einen neuen Zeiger in der Struktur, der die Adresse des Vorgänge- relements aufnehmen kann.

    • Die wichtigste Änderung müssen Sie beim Anhängen des neuen Elements vor- nehmen. Hier müssen Sie die Adresse des Vorgängerelements in Sicherheit brin- gen, bevor Sie den Hilfszeiger auf das neue Element verschieben. Dazu können Sie zum Beispiel einen Ausdruck wie hilfszeiger->next->last benutzen. Mit diesem Ausdruck greifen Sie auf einen Zeiger last in dem Element zu, das über hilfszeiger->next angesprochen wird.

    #include <iostream>
    using namespace std;
    struct listenelement
    {
    string daten;
    listenelement* next;
    };
    void anhaengen(string datenneu, listenelement* listenanfang)
    {
    listenelement* hilfszeiger;
    hilfszeiger = listenanfang;
    while(hilfszeiger->next != NULL)
    hilfszeiger = hilfszeiger->next;
    hilfszeiger->next = new (listenelement);
    hilfszeiger = hilfszeiger->next;
    hilfszeiger->daten = datenneu;
    hilfszeiger->next = NULL;
    }
    void ausgeben(listenelement listenanfang)
    {
    listenelement
    hilfszeiger;
    hilfszeiger = listenanfang;
    cout << hilfszeiger->daten << '\n';
    while (hilfszeiger->next != NULL)
    {
    hilfszeiger = hilfszeiger->next;
    cout << hilfszeiger->daten << '\n';
    }
    }
    void ende(listenelement* listenanfang)
    {
    listenelement* hilfszeiger;
    while (listenanfang !=NULL)
    {
    hilfszeiger = listenanfang;
    listenanfang = listenanfang->next;
    delete (hilfszeiger);
    }
    }

    int main ()
    {
    listenelement* listenanfang;
    listenanfang = new (listenelement);
    listenanfang->next = NULL;
    listenanfang->daten = "Element 1";
    anhaengen("Element 2", listenanfang);
    anhaengen("Element 3", listenanfang);
    anhaengen("Element 4", listenanfang);
    ausgeben (listenanfang);
    ende (listenanfang);

    return 0;
    }

    Also, ich hoffe ich habe alles richtig, in c++ ist das ding nicht so problematisch wie in QT, aber wir müssen die Aufgabe in QT lösen. Bitte um Rat und Hilfe.
    Blöde Komment's brauche ich bitte nicht.

    Danke euch!



  • Was hat das mit Qt zu tun?

    Und nein, du hast dein Code nicht in Code Tags eingeschlossen.



  • Stell eine konkrete Frage. Zeig uns Deinen Lösungsansatz.

    Bisher zeigst Du nur die Aufgabenstellung.

    Das

    ist nicht dafür da, um den Namen C++ im Fließtext zu einzufügen, sondern um Deinen Code zwischen [code="cpp"] und
    

    zu packen.


Anmelden zum Antworten