Java实现单链表反转,递归和非递归两种形式。接下来通过本文给大家分享Java实现单链表翻转实例代码,需要的的朋友参考下
Java实现单链表反转,递归和非递归两种形式
/** * 反转单链表 */ /** * 定义链表 * * @author 16026 * */ class Node { int val; Node next; public Node(int val) { this.val = val; } } public class ReverseList { /** * 反转链表 * * @param head * @return */ public static Node reverseList(Node head) { if (head == null || head.next == null) { return head; } Node reHead = null;// 定义新链表头结点 while (head != null) { Node cur = head.next;// 记录下一个节点 head.next = reHead;// 将rehead节点连接到head节点上 reHead = head;// 让rehead指向head head = cur;// 将head指向下一个节点 } return reHead; } /** * 递归反转链表 * * @param head * @return */ public static Node reverseList2(Node head) { if (head == null || head.next == null) return head; Node rehead = reverseList2(head.next); head.next.next = head;// 将头节点置于末端 head.next = null;// 防止链表循环 return rehead; } /** * 打印链表 * * @param head */ public static void printList(Node head) { if (head == null) return; while (head != null) { System.out.print(head.val + " "); head = head.next; } } /** * 测试 * * @param args */ public static void main(String[] args) { Node n1 = new Node(1); Node n2 = new Node(2); Node n3 = new Node(3); Node n4 = new Node(4); Node n5 = new Node(5); n1.next = n2; n2.next = n3; n3.next = n4; n4.next = n5; // Node rehead = reverseList(n1); Node rehead = reverseList2(n1); printList(rehead); } }
运行结果如下:
以上就是Java单链表翻转实现的实例代码分享的详细内容,更多请关注php中文网其它相关文章!
已抢186986个
抢已抢67465个
抢已抢353658个
抢已抢668187个
抢已抢123581个
抢已抢25495个
抢