话不多说,直接上代码
通过栈的方式
public class ShowMeBug {
public static ListNode inverseListNode(ListNode listNode){
if(listNode == null ||listNode.nextNode == null){
return listNode;
}
ListNode tmp = listNode;
Stack<ListNode> listNodes = new Stack<>();
listNodes.add(tmp);
while( (tmp = tmp.nextNode)!=null){
listNodes.add(tmp);
}
ListNode next = null;
ListNode current = listNodes.pop();
ListNode first = current;
while(!listNodes.isEmpty() && (next = listNodes.pop())!=null){
current.nextNode = next;
current = next;
}
//最后一个节点必须指向空。
next.nextNode = null;
return first;
}
public static void main(String[] args) {
ListNode listNode1 = new ListNode(1,null);
ListNode listNode2 = new ListNode(2,listNode1);
ListNode listNode3 = new ListNode(3,listNode2);
ListNode listNode4 = new ListNode(4,listNode3);
ListNode result = inverseListNode(listNode4);
System.out.println("111");
}
static class ListNode{
public int value;
public ListNode nextNode;
public ListNode(int value,ListNode listNode){
this.value = value;
this.nextNode = listNode;
}
}
}
也可以通过数组或双向队列实现
public class ShowMeBug {
public static ListNode inverseListNode(ListNode listNode){
if(listNode == null ||listNode.nextNode == null){
return listNode;
}
ListNode tmp = listNode;
Deque<ListNode> listNodes = new ArrayDeque<ListNode>();
listNodes.add(tmp);
while( (tmp = tmp.nextNode)!=null){
listNodes.add(tmp);
}
ListNode next = null;
ListNode current = listNodes.pollLast();
ListNode first = current;
while(!listNodes.isEmpty() && (next = listNodes.pollLast())!=null){
current.nextNode = next;
current = next;
}
//最后一个节点必须指向空。
next.nextNode = null;
return first;
}
public static void main(String[] args) {
ListNode listNode1 = new ListNode(1,null);
ListNode listNode2 = new ListNode(2,listNode1);
ListNode listNode3 = new ListNode(3,listNode2);
ListNode listNode4 = new ListNode(4,listNode3);
ListNode result = inverseListNode(listNode4);
System.out.println("111");
}
static class ListNode{
public int value;
public ListNode nextNode;
public ListNode(int value,ListNode listNode){
this.value = value;
this.nextNode = listNode;
}
}
}
网友评论