`
aaron-han
  • 浏览: 26237 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

算法基础之单链表逆置

阅读更多
貌似各种笔试面试里这个挺爱考的,不清楚过程多画画图就明白了。
先写的单的,哪天把双链表逆置写一下。
public class LinkedListReverse {

	/**
	 * 单链表逆置
	 * 
	 * @author aaron-han
	 * 
	 */
	public static void main(String[] args) {
		Node a = new Node("NodeA");
		Node b = new Node("NodeB");
		Node c = new Node("NodeC");
		Node d = new Node("NodeD");
		Node e = new Node("NodeE");

		a.next = b;
		b.next = c;
		c.next = d;
		d.next = e;

		System.out.println("original:");
		printNodes(a);
		Node head = reverse(a);
		System.out.println("after reverse:");
		printNodes(head);
	}

	public static Node reverse(Node node) {
		if (node == null) {
			return node;
		}
		Node head = node;
		Node pre = null;
		Node next = head.next;
		while (next != null) {
			head.next = pre;
			pre = head;
			head = next;
			next = next.next;
		}
		head.next = pre;
		return head;
	}

	public static void printNodes(Node node) {
		for (; node != null; node = node.next) {
			System.out.println(node.name);
		}
	}

	static class Node {
		String name;
		Node next;

		Node(String name) {
			this.name = name;
		}
	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics