链表的反转

来源:互联网 发布:java实现ftp上传文件 编辑:程序博客网 时间:2024/06/08 07:47

1.题目描述
输入一个链表,反转链表后,输出链表的所有元素。
2.code(java1.7版本)

/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    public ListNode ReverseList(ListNode head) {        if(head==null){            return null;        }        ListNode start,temp,end;        start=null;        temp=head;        end=temp.next;        while(temp!=null){            temp.next=start;            start=temp;            temp=end;            if(temp==null){                end=null;            }            else{                end=end.next;            }        }        return start;    }}

3.思路分析
运用3个ListNode类型的数据,start、temp以及end。start用于保存当前节点之前的一个节点,temp用于保存当前节点,end用于保存当前节点之后的一个节点。每次循环用于判断当前节点是否为空,不是,则将当前节点的下一个节点赋值为上一个节点,并将3个节点往后面移动,start节点赋值为temp节点,temp节点赋值为end节点,end节点赋值为再下一个节点,这样循环到temp为null时结束循环,返回头节点start即可完成链表的反转。

原创粉丝点击