einfach verkettete Liste



  • Hallo, ich finde den Fehler einfach nicht, dass Programm läuft beim compilen durch aber stürtzt direkt ab wenn es ausgeführt wird, ich denke ich greife irgnedwo drauf zu wo ich nicht darf, aber ich find die Stelle einfach nicht.

    Vielen Dank

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct db{
      char name[20];
      int key;
     struct db *next;
    };
    
    struct db *next=NULL;
    struct db *head=NULL;
    
    void insert(char iname[20], int ikey)
        {
        struct db *zeiger;
           if(head==NULL){
    
            if((head = (struct db *)  malloc(sizeof(struct db))) == NULL) {
             fprintf(stderr, "Kein Speicherplatz vorhanden " "für anfang\n");
             return;
          }
    
            strcpy(head->name,iname);
                   head->key=ikey;
    
                   head->next=NULL;
           }
           else{
                zeiger=head; 
                while(zeiger->next != NULL)
                      zeiger=zeiger->next;
    
                        if((zeiger->next =(struct db *)  malloc(sizeof(struct db))) == NULL) {
                                fprintf(stderr,"Kein Speicherplatz für das " "letzte Element\n");
                                return;
                            }
                }
                zeiger=zeiger->next;
                strcpy(zeiger->name,iname);
              zeiger->next=NULL;
    
        }
    
    int main(){
    
        insert("test",2);
    
        printf("%s, %d ",head->name,head->key);
        return 0;
        }
    


  • zeiger wird nicht initialisiert; du greifst ins Leere wenn du auf Zeile 42 zeiger=zeiger->next; ausführst. Mit einer besseren Codeformattierung hättest du dies vielleicht schon eher gesehen. Ach und wie war das nochmal, malloc sollte man nicht casten? 😉

    MfG



  • @malloc hm ja man hält sich halt daran was einem der Prof sagt 🙂

    was meinst mit der zeiger wird nicht init.? er bekommt doch next zugewiesen?



  • codyjack schrieb:

    @malloc hm ja man hält sich halt daran was einem der Prof sagt 🙂

    I don't. Nicht wenns ums Programmieren geht. Aber auf Sicherheit zu setzen ist keine schlechte Idee an manchen Institutionen 😉

    codyjack schrieb:

    was meinst mit der zeiger wird nicht init.? er bekommt doch next zugewiesen?

    Nope.


Anmelden zum Antworten