Java数据结构之链表反转

来源:互联网 发布:手机慢动作软件 编辑:程序博客网 时间:2024/04/28 06:10
思路很简单,定义一个类,这个类分成2块,一块是表示自身的标志,另外一个存储指向下一个元素的引用。通过互换相邻两个节点的引用来达到链表反转的效果。上代码:
package com.withiter.test;public class ReverseList {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubNode nodeLink = add("1", null);add("2", nodeLink);add("3", nodeLink);add("4", nodeLink);add("5", nodeLink);print(nodeLink);nodeLink = reverse(nodeLink);print(nodeLink);}public static Node add(String name, Node head) {if (head == null) {return new Node(name);} else {Node p = head;while (p.next != null) {p = p.next;}p.next = new Node(name);return head;}}        // 反转的核心方法public static Node reverse(Node head){if(head == null){return null;}Node p = head;Node q = head.next;p.next = null;while(q != null){Node temp = q.next;              q.next = p;              p = q;              q = temp;  }return p;}public static void print(Node head) {if (head == null) {System.out.println("null");} else {Node p = head;while (p != null) {System.out.print(p.name + "\t");p = p.next;}System.out.print("\n");}}}class Node {public Node(String name) {super();this.name = name;}public String name; // 自身标志public Node next; // 指向下一个节点的引用}

运行打印结果:

1    2    3    4    5    
5    4    3    2    1
0 0