Queue mit Fließkommazahlen

  • Hallo,
    hab glaub ich nur ein kleines Problem.
    Wie bekomme ich das tyedef bei den beiden Strukturen weg, ohne die Arbeitsweise des Programms zu verändern?
    Habs probiert wegzunehmen und umzunennen aber dann bekommen ich eine Menge Fehler vom Compiler gezeigt.
    Die Strukturen sollen dann nur noch struct Queueelement und struct Queue heißen.


    Schonmal danke im vorraus.

    MMM

    Einmal editiert, zuletzt von The User (5. Januar 2010 um 21:16) aus folgendem Grund: [code] benutzen!!!

  • Für jeden struct braucht man ein typedef davor
    du könntest höchstens die structs in Klassen umwandeln.

    Aber: warum willst du die überhaupt weggeben? O.o Welchen sinn ergibt das?

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Könntest du das evtl. etwas konkretisieren? Hab noch nich soviel Erfahrung.

  • Wenn ich sage: In Klassen umwandeln ist das ziemlich konkret ;)
    Dabei bleibt der Rest des Programmes gleich.
    Beherrscht du OOP?

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Hehe... OOP? naja mache C eher zwangsweise und komm noch so durch. Aber von in Klassen umwandeln hab ich echt keine Idee zu. Vllt könntest du ja einen kleinen Tip geben. Fehlt echt nur die "Kleinigkeit"....

  • Code
    struct Queueelement { 
     float value; 
     struct _Queueelement *next; 
    }; 
     
    struct Queue { 
     Queueelement *first; 
     Queueelement *last; 
    };


    Das sollte ein gängiger Compiler verstehen...
    Du solltest jedoch einmal die [ code ]-tags verwenden und deinen Code sauber formatieren, auch solltest du dir einmal Namenskonventionen überlegen.

    Dodo
    Das war doch recht klar, dass das C ist, seltsame typedefs vor dem struct, stdio.h, keine OOP...
    Ziemliche Scheiße, so zu programmieren, aber so ist das halt an Unis.

  • Sry wenns nervt aber funktioniert leider garnich.... der Compiler dreht quasi durch... sende einmal den kompletten Code... vllt seht ihr da noch was, wenn ihr das noch mal angucken würdet.

    [code]
    #include <stdio.h>
    #include <stdlib.h>

    struct Queueelement {
    float value;
    struct _Queueelement *next;
    };

    struct Queue {
    Queueelement *first;
    Queueelement *last;
    };
    int enqueue(Queue *q,float data){
    Queueelement *n = malloc(sizeof(Queueelement));
    if(n!=NULL){
    n->next = NULL;
    n->value = data; /*das n welches auf value zeigt soll den Wert von data bekommen*/
    if(q->last==NULL){
    q->last = q->first = n;
    }else{
    q->last->next = n;
    q->last = n;
    }
    return 1;
    }
    printf("buffer overrun");
    return 0;
    }

    float dequeue(Queue *q){
    Queueelement *n = q->first;
    float ret = 0;
    if(n!=NULL){
    q->first = n->next;
    if(q->first == NULL)
    q->last = NULL;
    ret = n->value;
    free(n);
    }else{
    printf("buffer underrun");
    }
    return ret;
    }

    float front(Queue *q){
    printf("%f", q->first->value);
    }

    int main(void) {
    Queue q;
    q.first = NULL;
    q.last = NULL;
    enqueue(&q,1.0);
    enqueue(&q,2.0);
    enqueue(&q,3.0);
    enqueue(&q,4.0);
    enqueue(&q,5.0);
    front(&q);
    printf("%f\n",dequeue(&q));
    printf("%f\n",dequeue(&q));
    printf("%f\n",dequeue(&q));
    front(&q);
    printf("%f\n",dequeue(&q));
    printf("%f\n",dequeue(&q));
    //system("pause");
    return 0;
    }
    [\code]