本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下:
struct ListNode { int data; struct ListNode *next; };
函数接口定义:
struct ListNode *reverse( struct ListNode *head );
其中head
是用户传入的链表的头指针;函数reverse
将链表head
逆置,并返回结果链表的头指针。
struct ListNode* reverse(struct ListNode* Node)
{
if (Node == NULL)
{
return NULL;
}
struct ListNode* next = Node->next;
struct ListNode* cur = Node;
cur->next = NULL;
while (next != NULL)
{
struct ListNode* tmp = next->next;
next->next = cur;
cur = next;
next = tmp;
}
return cur;
}