Warteschlange mit einer Struktur



  • Guten Morgen an alle,

    Es geht um folgende Aufgabe:

    Mit Hilfe einer verketteten Liste soll eine Warteschlange für Buchbestellungen aufgebaut werden. Jede Bestellung soll eine Nummer (als ganze Zahl), einen Preis und einen Bestellernamen (20 Zeichen) enthalten.

    1. Entwerfen Sie eine Strultur TBuch, mit deren Hilfe eine Warteschlange als verkettete Liste aufgebaut werden kann.
    2. Programmieren Sie die Funktion
    struct TBuch* Queue(TBuch*, int, float, char[]);
    

    mit der ein Element in der Warteschlange einegereiht werden kann.

    struct TBuch {
      private:
        int Nummer;
        float Preis;
        char name[20];
        Queue *next;
      public:
        int Queue();
        int Pop();
    }*Anfang;
    
    struct TBuch* Queue(TBuch*, int, float, char[]){
      struct TBuch *ptr;  //neuer Zeiger 
      ptr=Anfang;
      Anfang=malloc(sizeof(struct TBuch)); //neues Objekt erstellen und die Adresse an Anfang geben
      Anfang->next=ptr;
    };
    

    Ist das richtig ?

    Danke!



  • Die Aufgabe sieht nach C aus => nicht richtig, falsches Forum



  • Nee ist C++

    Aber stimmt müsste statt malloc(sizeof()) das NEW nehmen....

    Ist es dennoch richtig ?



  • Ist die Aufgabenstellung jetzt C oder C++ ? Weil jenachdem sieht der Code auch anders aus, du vermischt gerade beides.

    einen Preis und einen Bestellernamen (20 Zeichen)

    D.h. ansich musst du ein 21 Zeichen array in der struct haben, damit 20 Zeichen + Nullterminierung Platz haben.

    struct TBuch* Queue(TBuch*, int, float, char[]){ // Warum werden keine Parameter genutzt ? Wo wird das neue Element gefüllt ?
      struct TBuch *ptr;  //neuer Zeiger 
      ptr=Anfang; // Wo ist Anfang definiert ?
      Anfang=malloc(sizeof(struct TBuch)); //Seit wann hängt man Objekte in einer List vor dem Anfang an statt am Ende ?
      Anfang->next=ptr;
      //Wo ist das return ?
    }; // Hier kein Semikolon
    

    Übersichtlicher wäre statt deinen Code:

    struct TBuch *ptr = malloc(sizeof(TBuch));
    ptr->next = Anfang;
    Anfang = ptr;
    

    Da sieht man schneller was passiert, zumindest meine Meinung.



  • - die Memberfunktionen Queue und Pop haben nichts mit der Aufgabenstellung zu tun
    - in C++ schreibt man nicht "struct TBuch*" sondern einfach "TBuch*" (unter anderem deshalb sieht die Aufgabenstellung nach C aus)
    - ja, new/delete statt malloc/free

    Woher stammt die Aufgabe? Der Verfasser lehrt C, nicht C++!



  • Es ist C++

    Ja stimmt, habe nicht mehr an den Nullterminator gedacht, danke.

    Der Zeiger Anfang habe ich doch im ersten Code definiert.

    Übersichtlicher wäre statt deinen Code:

    struct TBuch *ptr = malloc(sizeof(TBuch));
    ptr->next = Anfang;
    Anfang = ptr;
    

    Da sieht man schneller was passiert, zumindest meine Meinung.

    Aber die FUnktion ist doch in der Aufgabenstellung gegeben, die darf ich dann NICHT ändern

    Gruss



  • newinc schrieb:

    Aber die FUnktion ist doch in der Aufgabenstellung gegeben, die darf ich dann NICHT ändern

    Die Aufgabenstellung definiert die Signatur der Funktion, d.h. welche Datentypen in welcher Reihenfolge vorkommen. Um diese Werte zu nutzen, darfst du SELBSTVERSTÄNDLICH den Parameter Namen geben, sonst sind sie SINNLOS.

    Das der Funktion übergebene TBuch* soll vermutlich der "Anfang" sein.


  • Mod

    newinc schrieb:

    Es ist C++

    Technisch gesehen ja. Aber es ist C mit Klassen. Technisch gesehen ist dies auch ein Zug. Und der Fahrer dieses Zuges kannte sich ungefähr genau so gut mit Eisenbahnen aus, wie dein Lehrer mit Programmieren. Wenn du die Wahl hast, würde ich an deiner Stelle schleunigst aus dem Wagen Kurs aussteigen, bevor dir was zustößt.



  • SeppJ schrieb:

    Wenn du die Wahl hast, würde ich an deiner Stelle schleunigst aus dem Wagen Kurs aussteigen, bevor dir was zustößt.

    Wenns mal nicht zu spät ist.
    http://3.bp.blogspot.com/-AC5Ir9VQGqE/T2OoH6P8nkI/AAAAAAAAAW8/k_JQND1sp2Q/s640/train-wreck.jpg


Anmelden zum Antworten