Element zu Liste hinzufügen

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • 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 Source Code

    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. }
    Display All