链表反转

思路:从原链表的头部一个一个取节点并插入到新链表的头部

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* reverseList(struct ListNode* head) {
    
    struct ListNode* result = 0;
    while (head)
    {
        /*创建工作结点,保存head->next*/
        struct ListNode* next = head->next;

        /*把当前链表的头结点插入新链表的开始位置,作为新链表头结点*/
        head->next = result;
        result = head;

       /*如果有后续结点,把后续结点作为头结点,返回上一步。*/
        head = next;
    }

    return result;
    
}

 

posted @ 2017-12-18 22:18  f826539110  阅读(132)  评论(0编辑  收藏  举报