Element zu Liste hinzufügen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Element zu Liste hinzufügen

    Hallo!


    Ich soll eine Funktion void add(struct entry* left, struct entry* element); schreiben die einer Liste ein Strukturelement hinzufügt und komme einfach nirgends hin. Kann mir vlt. jemand sagen was ich falsch mache. Windows muss das Program beenden.

    Wie ich das sehe muss ich doch zuerst Speicherplatz mit malloc zur Verfügung stellen, des Strukturelement füllen, dann einen Zeiger des Strukturelements an die Funktion übergeben, dass dann das Strukturelement an die richtige Position bringt. Stimmt das?

    Was ist daran falsch?:

    C-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. struct entry{
    4. char name[20];
    5. int Menge;
    6. int Kategorie;
    7. struct entry *next;
    8. };
    9. void ausgeben(struct entry*kopf){
    10. struct entry*akt;
    11. akt=kopf;
    12. while(akt!=NULL){
    13. printf("%s",akt->name);
    14. printf("%i",akt->Kategorie);
    15. printf("%i",akt->Menge);
    16. akt=akt->next;
    17. }
    18. }
    19. void add(struct entry* left, struct entry* element){
    20. struct entry*aktuell;
    21. /*element = (struct entry*) malloc(sizeof(struct entry));*/
    22. if (element == NULL) {
    23. printf(".......Speicherplatzmangel\n");
    24. exit(1);
    25. }
    26. aktuell=NULL;
    27. while(aktuell->next != left->next){
    28. aktuell=aktuell->next;
    29. }
    30. element->next=aktuell->next;
    31. aktuell->next=element;
    32. }
    33. int main(){
    34. struct entry *kopf;
    35. struct entry *neu;
    36. kopf=NULL;
    37. neu=malloc(sizeof(struct entry));
    38. neu->next=kopf;
    39. kopf=neu;
    40. neu->Menge=3;
    41. neu->Kategorie=3;
    42. ausgeben(kopf);
    43. struct entry *element=(struct entry*)malloc(sizeof(struct entry));
    44. printf("\nGib den einzufuegenden Namen ein: ");
    45. scanf("%s",&(*element).name);
    46. printf("\nGib die Menge ein:");
    47. scanf("%s",&(*element).Menge);
    48. printf("\nGib die Kategorie ein:");
    49. scanf("%s",&(*element).Kategorie);
    50. add( kopf ,element);
    51. ausgeben(kopf);
    52. getchar();
    53. return 0;
    54. }
    Alles anzeigen