首页 > 其他 > 详细

反转链表 16

时间:2015-03-22 13:26:09      阅读:197      评论:0      收藏:0      [点我收藏+]

总结

? ?

定义三个类似指针的引用,一个指向当前节点,一个指向前一个节点,初始化为null,一个指向后一个节点

? ?

判定反转链表的头节点的依据是当前节点的下一个节点为null

? ?

反转过程,就是将前一个节点作为当前节点的下一个节点,将当前节点作为前一个节点,最后将下一个节点作为当前节点,实现链表的遍历继续进行下去

? ?

package reverseList16;

? ?

public class ReverseList16 {

? ?

public static void main(String[] args) {

// TODO Auto-generated method stub

ListNode headNode=new ListNode();

headNode.data=1;

ListNode l1=new ListNode();

l1.data=2;

ListNode l2=new ListNode();

l2.data=3;

headNode.nextNode=l1;

l1.nextNode=l2;

l2.nextNode=null;

printList(headNode);

ListNode resultNode=reverseList(headNode);

printList(resultNode);

}

static void printList(ListNode headNode){

System.out.print(headNode.data+"-->");

while (headNode.nextNode!=null) {

headNode=headNode.nextNode;

if (headNode.nextNode==null) {

System.out.println(headNode.data);

}else {

? ?

System.out.print(headNode.data+"-->");

}

}

? ?

}

static ListNode reverseList(ListNode head){

if (head==null) {

return null;

}

ListNode preNode=null;

ListNode nowNode=head;

ListNode resultNode =null;

while (nowNode!=null) {

ListNode nextNode=nowNode.nextNode;

if (nextNode==null) {

resultNode=nowNode;

}

nowNode.nextNode=preNode;

preNode=nowNode;

nowNode=nextNode;

}

return resultNode;

? ?

}

}

class ListNode{

int data;

ListNode nextNode;

}

反转链表 16

原文:http://www.cnblogs.com/keedor/p/4356992.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!