#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct bestellung{
                   int kundennummer;
                   char buchtitel[50];
                   float preis;
                   struct bestellung *next;
                 };

struct bestellung *anfang, *neu, *kill;

int stackinit()
{
 if((anfang=(struct bestellung *)malloc(sizeof(struct bestellung))) != NULL)
  {
   anfang->next = NULL;
   anfang->kundennummer = 0;
   strcpy(anfang->buchtitel,"dummy");
   anfang->preis = 0;
   return 1;
  }
 else
   return 0;
}

int push(int kdnum, char *titel, float pr)
{
 if((neu=(struct bestellung *)malloc(sizeof(struct bestellung))) != NULL)
  {
   neu->kundennummer = kdnum;
   strcpy(neu->buchtitel,titel);
   neu->preis = pr;

   neu->next = anfang->next;
   anfang->next=neu;
   return 1;
  }
 else
   return 0;
}

void pop()
{
 kill = anfang->next;
 anfang->next=kill->next;
 free(kill);
}

int main()
{
 struct bestellung *bearbeitet;
 int nummer,wahl;
 char buchtit[50];
 float preis;

 stackinit();

 do{
      printf("-1- Bestellung eingeben\n");
      printf("-2- Bestellung abschicken\n");
      printf("-3- Programmende\n\n");
      printf("Ihre Auswahl : ");
      scanf("%d",&wahl);

      switch(wahl)
       {
        case 1 : printf("Kundennummer.....: ");
                 scanf("%d",&nummer); fflush(stdin);
                 printf("Buchtitel........: ");
                 scanf("%s",buchtit); fflush(stdin);
                 printf("Preis............: ");
                 scanf("%f",&preis);fflush(stdin);
                 push(nummer,buchtit,preis);
                 break;
        case 2 : if((bearbeitet=anfang->next) != NULL)
                   {
                      printf("\nKunde: %d\nBuchtitel : %s\nPreis : %.2f\n",
                            bearbeitet->kundennummer,bearbeitet->buchtitel,
                            bearbeitet->preis);
                      printf("->Bestellung abgelierfert.\n\n");
                      pop();
                   }
                 else if(anfang->next==NULL)
                   {
                      printf("Es sind keine Bestellungen vorhanden\n");
                      exit (0);
                   }
                 break;
        case 3 : if(anfang->next != NULL)
                   {
                     printf("Es sind noch Bestellung zu bearbeiten!\n");
                     wahl=4;
                   }
                 break;
        case 4 : break;
        default: printf("Falsche Eingabe!!!\n");
                 break;
      }
    }while(wahl != 3);

 printf("\nProgrammende!!!\n");

 return 0;
}