How do you write a function that can reverse a linked-list?

public void reverseList()
{
if (head == 0)
return;
if (head->next == 0)
return;
if (head->next == tail)
{
head->next = 0;
tail->next = head;
}
else
{
node* pre = head;
node* cur = head->next;
node* curnext = cur->next;
head->next = 0;
cur->next = head;
for (; curnext != 0; )
{
cur->next = pre;
pre = cur;
cur = curnext;
curnext = curnext->next;
}
curnext->next = cur;
}
}

Tagged . Bookmark the permalink.

Leave a Reply