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.#include <stdio.h> #include <stdlib.h> typedef struct _Queueelement{ float value; struct _Queueelement *next; }Queueelement; typedef struct _Queue{ Queueelement *first; Queueelement *last; }Queue; 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; }
Schonmal danke im vorraus.
-
struct Queueelement{ float value; struct Queueelement *next; } ; struct Queue{ struct Queueelement *first; struct Queueelement *last; }; int enqueue( struct Queue *q, float data){ struct Queueelement *n = malloc(sizeof( struct 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( struct Queue *q){ struct 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( struct Queue *q){ printf("%f", q->first->value); } int main(void) { struct 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; }
Die Einrückung sollte noch bearbeitet werden, den Inhalt des Codes und dessen Funktion habe ich nicht weiter geprüft. Willst du, das man deine Aufgabe als Copy&Paste Version nicht entdeckt, oda watt.
Gruß,
B.B.
-
Fettes Danke ada...
hast mir supergeholfen
cool mannn
-
ey Big Brother, du hast mega drauf
könntest du mir
hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-257638-and-postdays-is-0-and-postorder-is-asc-and-start-is-20.htmlauch helfen. da geht sonst keiner drauf
-
Wo ist das Problem? Wird da überhaupt etwas übergeben ( Zeiger != NULL )?