您的位置:首页 > 编程语言 > Java开发

单链表反转java

2017-06-08 17:54 411 查看
public class SingleLinkTest {

public static void main(String[] args) {
Node node = new Node(0);
Node head = node;
int i = 1;
while(i < 10){
node.next = new Node(i);
node = node.next;
i++;
}
Node cur = head;
while(cur != null){
System.out.print(cur.data + ",");
cur = cur.next;
}

System.out.println("反转后");
head = reverse(head);
cur = head;
while(cur != null){
System.out.print(cur.data + ",");
cur = cur.next;
}

System.out.println("反转后");
head = reverseNoDiGui(head);
cur = head;
while(cur != null){
System.out.print(cur.data + ",");
cur = cur.next;
}
}

public static Node reverse(Node node){
if(node == null || node.next == null){
return node;
}
Node reHead = reverse(node.next);
node.next.next = node;
node.next = null;
return reHead;
}

public static Node reverseNoDiGui(Node head){
Node pre = head;
Node cur = head.next;
Node temp;
while(cur != null){
temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
head.next = null;
return pre;
}
}

class Node {
public Node(int data) {
this.data = data;
}

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