Wie reverse eine einfach verknüpfte Liste mit nur zwei Zeiger?

Ich würde gefragt, wenn es gibt ein paar Logik eine Umkehrung der verlinkten Liste mit nur zwei Zeigern.

Folgenden wird verwendet, um reverse die einfach verkettete Liste mit drei Zeigern, nämlich p, q, r:

struct node
{
    int data;
    struct node *link;
};

void reverse()
{
    struct node *p = first,
                *q = NULL,
                *r;
    while (p != NULL)
    {
        r = q;
        q = p;
        p = p->link;
        q->link = r;
    }
    q = first;
}

Gibt es irgendeine andere Alternative zum umkehren der verlinkten Liste? was wäre die beste Logik umkehren eine einfach verknüpfte Liste, in Bezug auf die Zeit-Komplexität?

InformationsquelleAutor der Frage Madhan | 2009-11-26

Schreibe einen Kommentar