3 Stimmen

Löschen des ersten und letzten Elements einer verknüpften Liste in C

struct person 
{
    int age;
    char name[100];
    struct person *next;
};

void delfirst(struct person **p)// For deleting the beginning
{
    struct person *tmp,*m;
    m = (*p);
        tmp = (*p)->next;
    free(m);
    return;

}
void delend(struct person **p)// For deleting the end
{
    struct person *tmp,*m;
    tmp=*p; 
    while(tmp->next!=NULL)
    {
        tmp=tmp->next;
    }
    m->next=tmp;
    free(tmp);
    m->next = NULL;
    return;

}

Ich bin auf der Suche nach zwei separaten Funktionen zum Löschen des ersten und letzten Elements einer verknüpften Liste. Hier ist, was ich versucht habe. Was schlagen Sie vor? Besonders das Löschen des ersten Elements ist für mich sehr problematisch.

0 Stimmen

Welches Problem haben Sie mit diesem Code?

0 Stimmen

In Ihrem delend Funktion m tut nichts.

2voto

Andrey Punkte 57704
    if (!p || !(*p))
       return;
    struct person *tmp;
    tmp = (*p);
    (*p) = (*p)->next;
    free(tmp);
    return;

void delend(struct person **p)// For deleting the end
{
    if (!p || !(*p))
        return;
    if (!(*p)->next)
    {
        *p = NULL;    
    }
    struct person *tmp,*m;
    tmp=*p; 
    while(tmp->next->next!=NULL)
    {
        tmp=tmp->next;
    }
    free(tmp->next);
    tmp->next = NULL;
    return;

}

1 Stimmen

@LuckySlevin: Sie könnten sich auch diese Seite ansehen richardbowles.tripod.com/cpp/linklist/linklist.htm Ein wenig unübersichtlich, aber es lehrt Sie, wie man Elemente in einer verknüpften Liste löscht.

0 Stimmen

Vielen Dank, Andrey, das löst mein Problem, den ersten Knoten zu löschen.

1 Stimmen

@LuckySlevin überprüfen Sie die Bearbeitung. wirklich riecht es wie Hausaufgaben, und wenn es so ist, bedauere ich es für Sie zu tun. Sie sollten verknüpfte Liste mindestens einmal implementieren, wenn Sie echte Programmierer werden wollen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X