【IT笔试面试题整理】反转链表

来源:互联网 发布:好看的美国电影 知乎 编辑:程序博客网 时间:2024/05/01 17:17

【试题描述】定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点

【参考代码】

方法一:

 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     }

 

阅读全文
0 0
原创粉丝点击