您的位置:首页 > 其它

翻转链表

2017-03-31 00:38 190 查看
问题描述:翻转一个链表

                   样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null

思路:利用了头插法。大体思路为创建空链表,再将原链表中的节点依次插到null的前面。

             具体是:创建null来生成新链表,创建新链表temp储存head,防止数据丢失。

             head->next=prev将第一个节点与原链表断开;再将prev=head就将第一个节点插入了;再head=temp进行循环操作。 最后返回prev。

代码:/**

 * Definition of ListNode

 * 

 * class ListNode {

 * public:

 *     int val;

 *     ListNode *next;

 * 

 *     ListNode(int val) {

 *         this->val = val;

 *         this->next = NULL;

 *     }

 * }

 */

class Solution {

public:

    /**

     * @param head: The first node of linked list.

     * @return: The new head of reversed linked list.

     */

    ListNode *reverse(ListNode *head) {

        // write your code here

        ListNode *prev=NULL;
        while(head!=NULL)
        {ListNode *temp=head->next;
         head->next=prev;
         prev=head;
         head=temp;
        }
        return prev;

}

感想:这个题又让我学到了很多东西如null 的利用,断开链表。

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