您的位置:首页 > Web前端

剑指offer-反转链表

2017-03-16 20:23 507 查看
题目描述

输入一个链表,反转链表后,输出链表的所有元素。

解法1:

遍历链表的时候依次将每个指针指向前一个节点,这样遍历完时,正好所有的指针都反转,链表也反转。

代码:

public ListNode ReverseList(ListNode head) {
ListNode pre=null,next;
while(head!=null)
{
next=head.next;
head.next=pre;
pre=head;
head=next;
}
return pre;
}


解法2

采用头插法将节点依次取下插到头节点后面,这样遍历一遍链表以后正好将链表翻转。要注意的是如果链表没有头结点要自己加一个头结点。

代码

public ListNode ReverseList(ListNode head) {
ListNode phead=new ListNode(0);
ListNode pre,p;
p=pre=head;
while(pre!=null)
{
p=pre.next;
pre.next=phead.next;
phead.next=pre;
pre=p;
}
head=phead.next;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息