链表反转
输入一个链表,反转链表后,输出新链表的表头。
Java的链表定义
class LinkNode{
int data;
LinkNode next;
LinkNode(int data)
{
this.data=data;
}
/*****为链表增加节点*****/
public void addLinkNode(int data)
{
LinkNode newnode=new LinkNode(data);
if(this.next==null)//这里的this每次指向的都是该链表的第一个节点
this.next=newnode;
else
this.next.addLinkNode(data);
}
/****打印节点值*****/
public void print()
{
System.out.print(this.data);
if(this.next!=null)
{
System.out.print("->");
this.next.print();
}
}
}
反转链表
在不产生额外的开销情况下,只是依靠指针的next指向来进行反转,反转过程如下:
代码如下:
public ListNode ReverseList(ListNode head) {
if(head==null)
return null;
ListNode pre=null;
ListNode next=null;
while(head!=null)
{
next=head.next;
head.next=pre;
pre=head;
head=next;
}
return pre;
}