链表的递归反转

来源:互联网 发布:java代码大全下载 编辑:程序博客网 时间:2024/06/06 09:07
package ListTurn;/** * Created by Jackie on 2017/7/23. * */public class ListTurn {    private Node afterTurnNewHead;    private Node head = new Node(0, null);    private Node current = head;    public Node turnList(Node head){        if (head==null)            return null;        if (head.getNext()==null) {            afterTurnNewHead = head;            return head;        }        Node newHead = turnList(head.getNext());        newHead.setNext(head);        head.setNext(null);        return head;    }    public void addSomeNodes(){        for (int i = 1 ; i < 10 ; i++){            Node temp = new Node(i , null);            current.setNext(temp);            current = temp;        }    }    public void iterator(Node head){        Node tmpt = head;        while (tmpt!=null){            System.out.println(tmpt.getI());            tmpt = tmpt.getNext();        }    }    public Node getHead() {        return head;    }    public static void main(String[] args){        ListTurn listTurn = new ListTurn();        listTurn.addSomeNodes();        listTurn.iterator(listTurn.head);        Node node = listTurn.turnList(listTurn.getHead());        listTurn.iterator(listTurn.afterTurnNewHead);    }}class Node{    private int i;    private Node next;    public Node(int i, Node next){        this.i = i;        this.next = next;    }    public int getI() {        return i;    }    public Node getNext() {        return next;    }    public void setI(int i) {        this.i = i;    }    public void setNext(Node next) {        this.next = next;    }}