您的位置:首页 > 其它

LeetCode206:Reverse Linked List

2016-04-29 16:13 232 查看

Reverse a singly linked list.

分别用迭代和递归实现

struct ListNode
{
int val;
struct ListNode *next;
};

迭代实现:

struct ListNode* reverseList(struct ListNode* head)
{
struct ListNode *pre = NULL;
struct ListNode *cur = head;
while( cur != NULL )
{
struct ListNode *after = cur->next;
cur->next = pre;
pre = cur;
cur = after;
}
return pre;
}

递归实现:

1)如果head为空,或者只有head这一个节点,return head即可;

2)先遍历head->next为首的链表,得到一个头结点newHead;

3)把head赋值给head->next->next, head->next为空;

4)返回newHead。

struct ListNode* reverseList(struct ListNode* head)
{
if(head == NULL || head->next == NULL)
return head;

struct ListNode* newHead = reverseList(head->next);
head->next->next = head;
head->next = NULL;
return newHead;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: