反转链表 16

总结

   

定义三个类似指针的引用,一个指向当前节点,一个指向前一个节点,初始化为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;

}

    原文作者:keedor
    原文地址: https://www.cnblogs.com/keedor/p/4356992.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞