链表逆序输出数值
创建一个链表之后,翻转该链表返回一个链表,该链表由node1->node2->node3变成node3->node2->nod1.同时不能改变结构。
思路
首先拿到这道题第一想法是,如何把node的next当成pre来用。肯定是需要先循环中把最后面的一个放到最前面。定义两个node,一个nextnode一个prenode。先拿出node的下一个赋给nextnode方便下一步的调用,接着把该节点node的值指向prenode,下一步把node的值赋给nodepre等待下一个node的连接。最后把nextnode的值赋给node继续循环。
代码
package likendListStudy;
public class ReverseLinkedListNotChange {
public Node ReverseList(Node node) {
if (node == null) {
return null;
}
Node nodePre= null;
Node nodeNext= null;
while (node != null) {
// 首先拿到链表下一个要拿的node
nodeNext = node.getNest();
// 把node下一个存成定义好的上一个pre。
node.setNest(nodePre);
// 把node放到pre中
nodePre = node;
// 把要查的节点赋给node
node = nodeNext;
}
return nodePre;
}
void printList(Node node) {
while (node != null) {
System.out.print(node.getData()+",");
node = node.getNest();
}
}
public static void main(String args[]) {
Node node = new Node(1);
Node node1 = new Node(2);
Node node2 = new Node(3);
Node node3 = new Node(4);
Node node4 = new Node(5);
node.setNest(node1);
node1.setNest(node2);
node2.setNest(node3);
node3.setNest(node4);
ReverseLinkedListNotChange reverseLinkedListNotChange = new ReverseLinkedListNotChange();
Node nodef= reverseLinkedListNotChange.ReverseList(node);
reverseLinkedListNotChange.printList(nodef);
}
}
网友评论