hakkejimmy25
Grünschnabel
Hallo alle zusammen habe folgende Aufgabenstellung:
Programmieren Sie in C eine Warteschlange für int-Werte mit folgenden Operationen:
void qinit(): Erzeugen einer leeren Warteschlange. Sie besteht nur aus dem Endelement.
void enqueue(int element): Anfügen eines Elementes an die Warteschlange
int dequeue(void): Entfernen des ersten Elementes aus der Warteschlange
int isempty(void): Rückgabe von -1, falls die Schlange leer ist, 0 sonst.
void printQueue (void): Ausgabe der in der Schlange gespeicherten Elemente.
Benutzen Sie diese Warteschlangenimplementierung, um in einem Programm den Benutzer menügeführt eine Warteschlange füllen, entleeren und ausgeben zu lassen.
Das Menü sollte dabei ungefähr so aussehen:
Menü zur Warteschlangenverwaltung:
1. Anfügen eines Elementes
2. Löschen und ausgeben des ersten Elementes
3. Ausgeben der Warteschlange
4. Beenden des Programms
Bitte geben Sie die Ziffer der gewünschten Funktion ein:
Folgenden Code habe ich schon geschrieben.....Jedoch klappt es nicht so ganz wie ich möchte![Wink ;) ;)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f609.png)
Alsi ich möchte über die switch Anweisung Zahlen ( Integer Werte ) eingeben, die dann gespeichert werden sollen und später auch gelöscht werden können....
Mein Problem liegt erst mal bei der EIngabe....Bekomme es irgendwie nicht hin, das er die Integer Werte abspeichert
Programmieren Sie in C eine Warteschlange für int-Werte mit folgenden Operationen:
void qinit(): Erzeugen einer leeren Warteschlange. Sie besteht nur aus dem Endelement.
void enqueue(int element): Anfügen eines Elementes an die Warteschlange
int dequeue(void): Entfernen des ersten Elementes aus der Warteschlange
int isempty(void): Rückgabe von -1, falls die Schlange leer ist, 0 sonst.
void printQueue (void): Ausgabe der in der Schlange gespeicherten Elemente.
Benutzen Sie diese Warteschlangenimplementierung, um in einem Programm den Benutzer menügeführt eine Warteschlange füllen, entleeren und ausgeben zu lassen.
Das Menü sollte dabei ungefähr so aussehen:
Menü zur Warteschlangenverwaltung:
1. Anfügen eines Elementes
2. Löschen und ausgeben des ersten Elementes
3. Ausgeben der Warteschlange
4. Beenden des Programms
Bitte geben Sie die Ziffer der gewünschten Funktion ein:
Folgenden Code habe ich schon geschrieben.....Jedoch klappt es nicht so ganz wie ich möchte
![Wink ;) ;)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f609.png)
Alsi ich möchte über die switch Anweisung Zahlen ( Integer Werte ) eingeben, die dann gespeichert werden sollen und später auch gelöscht werden können....
Mein Problem liegt erst mal bei der EIngabe....Bekomme es irgendwie nicht hin, das er die Integer Werte abspeichert
Code:
#include <stdio.h>
#include <stdlib.h>
struct Element
{
int element; /* Zahlenwerte */
struct Element *n; /* Verweis auf Nachfolger */
};
struct Element *einfuegen (int element, struct Element *a);
struct Element *loeschen (int element, struct Element *a);
void anzeigen (struct Element *a);
int main(int argc, char *argv[])
{
struct Element * dieListe=NULL; /* Nullpointer bzw. Listenkopf */
int element; /* Zahlenwerte */
int befehl; /* wird für die Switch-Anweisung benötigt */
printf("\n< Einfuegen[1], Loeschen[2],Anzeigen[3], Ende[4] >"); /* Ausgabe */
while (EOF!=scanf("%d",&befehl))
{
getchar();
switch(befehl)
{
case 1 : printf("Werte zum einfuegen");
scanf("%d",&element);
dieListe=einfuegen(element,dieListe);
break;
case 2 : printf("Werte zum loeschen");
scanf("%d",&element);
dieListe=einfuegen(element,dieListe);
break;
case 3 : anzeigen(dieListe);
break;
case 4 : printf("ENDE");
return; /* Programm wird beendet */
} /* Ende vom switch */
printf("\n< Einfuegen[1], Loeschen[2],Anzeigen[3], Ende[4] >"); /* Ausgabe */
} /* Ende von der While-Anweisung */
system("PAUSE");
return 0;
}
struct Element *einfuegen (int element, struct Element *a)
{
struct Element *p=a; /* aktuelle Position */
struct Element *vp; /* Vorgängerposition */
struct Element *neu; /* Zeiger auf ein neues Element */
/* Enirichten eines neuen Elements */
neu=malloc(sizeof(struct Element)); /* Speicherplatz wird reserviert */
neu->element; /* Mit Werten füllen */
/* Neues Element an den Anfang ? */
(if p==NULL || element<0)
{
a=neu; /* neues Element wird Listenkopf */
(*neu).n=p; /* bisheriges erstes Objekt [Zugriff auf Komponente des Strukturobjekts] */
return a; /* wird dessen Nachfolger */
}
/* Sortiergerechte EInfügeposition suchen */
while(p!=NULL || element>=0)
{
vp=p; /* alte Position merken */
p=(*p).n; /* zum nächsten Element */
}
(*neu).n=p; /* Einhängen in Verkettung */
(*vp).n=neu;
return a;
}