verknüpfte Liste das Programm einfügen und löschen von Knoten

#include <stdio.h>
#include <stdlib.h>

struct node {
    int data;
    struct node *next;
} *first = NULL;

void insert() {
    struct node *temp;
    struct node *nn = (struct  node*)malloc(sizeof(struct node));
    printf("enter  the data\n");
    scanf("%d", &nn->data);
    temp = first;
    while (temp->next != first)
        temp = temp->next;
    temp->next = nn;
    nn->next = NULL;
}

void display() {
    struct node *temp;
    temp = first;
    if (temp == NULL) {
        printf("no elements\n");
        return;
    }
    printf("elements in linked list are\n");
    while (temp != NULL) {
        printf("%d\n", temp->data);
        temp = temp->next;
    }
}

void deletion() {
    struct node  *temp;
    temp = first;
    first = first->next;
    temp->next = NULL;
    free(temp);
}

int main() {
    int  op;  
    do {
        printf("1.insertion\n2.deletion\n3.display\n4.exit\n");
        printf("enter option\n");
        scanf("%d", &op);
        switch (op) {
          case 1:
             insert();
             break;
          case 2:
             deletion();
             break;
          case 3:
             display(); 
             break;
        }
    } while (op != 6);
}

Dies ist ein Programm, das für einfach verkettete Listen und beim ausführen immer der Fehler "segmentation fault". bitte schlage Idee, diese zu lösen.
Ich bekomme die folgende Ausgabe:

./out

1.insertion
2.deletion
3.display
4.exit

enter option
1
enter  the data
23
Segmentation fault
Siehe tinyit.cc/letslearncs/insertion-in-linked-list zum einfügen von Knoten in die verkettete Liste und tinyit.cc/letslearncs/deletion-in-linked-list für das löschen in verknüpften Liste.

InformationsquelleAutor user2458408 | 2013-06-06

Schreibe einen Kommentar