【IT笔试面试题整理】反转链表
【试题描述】定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点
【参考代码】
方法一:
1 public static Link reverseLinkList(Link head) 2 { 3 if (head == null || head.next == null) 4 return head; 5 6 Link pre = null; 7 Link cur = head; 8 Link back = head.next; 9 10 while (back != null) 11 { 12 cur.next = pre; 13 pre = cur; 14 cur = back; 15 back = back.next; 16 } 17 cur.next = pre; // 当current为最后一个节点时,back为null,所以要再指向前节点 18 head = cur; 19 20 return head; 21 }
方法二:
1 public static Link reverseLinkList2(Link head) 2 { 3 if (head == null || head.next == null) 4 return head; 5 Link p1 = head; 6 Link p2 = p1.next;// p2其实记录的下一步递归过程后的尾结点 7 head = reverseLinkList2(p2); 8 p2.next = p1; 9 p1.next = null; 10 return head; 11 }
努力奋斗的小墨鱼 ---- http://www.cnblogs.com/WayneZeng/