首页 > 其他 > 详细

LeetCode 206. 反转链表

时间:2020-03-16 22:10:05      阅读:59      评论:0      收藏:0      [点我收藏+]

206. 反转链表

难度简单

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

思路:才疏学浅,刚看过这道题之后,首先是想起了使用冒泡排序,遍历,替换元素。

技术分享图片
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* reverseList(struct ListNode* head){
    if(head==NULL)
        return;
    int len,i,j,temp;
    struct ListNode *p=head;
    for(len=0;p->next!=NULL;len++)
        p=p->next;
    j=len;
    for(i=len;i!=0;i--){
        p=head;
        for(j=0;j<i;j++){
            temp=p->val;
            p->val=p->next->val;
            p->next->val=temp;
            p=p->next;
        }
    }
    return head;
}
View Code
根据提示,研究了迭代的算法。
技术分享图片
struct ListNode* reverseList(struct ListNode* head)
{
    if(head==NULL)
      return NULL;
    struct ListNode *h1,*h2,*h3;
    h1=NULL;
    h2=head;
    h3=head->next;
    while(h2!=NULL)
    {
        h2->next=h1;
        h1=h2;
        h2=h3;
        h3=h2->next;
    }
    return h2;
}
View Code

 

LeetCode 206. 反转链表

原文:https://www.cnblogs.com/woju/p/12507021.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!