鏈表逆序輸出數(shù)值
創(chuàng)建一個(gè)鏈表之后李茫,翻轉(zhuǎn)該鏈表返回一個(gè)鏈表,該鏈表由node1->node2->node3變成node3->node2->nod1.同時(shí)不能改變結(jié)構(gòu)曲稼。
思路
首先拿到這道題第一想法是洛搀,如何把node的next當(dāng)成pre來(lái)用斤贰。肯定是需要先循環(huán)中把最后面的一個(gè)放到最前面。定義兩個(gè)node贸呢,一個(gè)nextnode一個(gè)prenode镰烧。先拿出node的下一個(gè)賦給nextnode方便下一步的調(diào)用,接著把該節(jié)點(diǎn)node的值指向prenode楞陷,下一步把node的值賦給nodepre等待下一個(gè)node的連接怔鳖。最后把nextnode的值賦給node繼續(xù)循環(huán)。
代碼
package likendListStudy;
public class ReverseLinkedListNotChange {
public Node ReverseList(Node node) {
if (node == null) {
return null;
}
Node nodePre= null;
Node nodeNext= null;
while (node != null) {
// 首先拿到鏈表下一個(gè)要拿的node
nodeNext = node.getNest();
// 把node下一個(gè)存成定義好的上一個(gè)pre固蛾。
node.setNest(nodePre);
// 把node放到pre中
nodePre = node;
// 把要查的節(jié)點(diǎn)賦給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);
}
}