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

Q

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

✍: Guest

A
 
void reverselist(void)
{
	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;
	}
}

2012-01-26, 2567👍, 0💬