Reverse a singly linked list.
思路:新建一个ListNode,最后返回这个ListNode.next。中间使用两个临时指针一个指向原来的链表头,一个指向新的链表的next.每次循环都往里面插入新的tempNode.
时间复杂度:O(n)
代码:
public ListNode reverseList(ListNode head) { ListNode node=new ListNode(0); ListNode tempNode=null; ListNode tempHead=head; while(head!=null) { tempHead=head; head=head.next; node.next=tempHead; tempHead.next=tempNode; tempNode=node.next; } return node.next; }
优化:
扩展: