代码改变世界

206_Reverse Linked List

2016-01-14 16:19  FTD_W  阅读(113)  评论(0编辑  收藏  举报

Reverse a singly linked list.

 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* reverseList(struct ListNode* head) {
    if(head == NULL || head->next == NULL)
    {
        return head;
    }
    
    struct ListNode* p = head;
    struct ListNode* newHead = NULL;
    struct ListNode* insert = NULL;
    
    while(p != NULL)
    {
        struct ListNode* insert = (struct ListNode *)malloc(sizeof(struct ListNode));
        insert->val = p->val;
        insert->next = newHead;
        newHead = insert;
            
        p = p->next;
    }
    return newHead;
}

注:在代码中用head赋值的变量,除了控制循环一般不要改变它的值,因为会改变head与指向head的变量的值。