题目及测试
package sword005;
/**题目描述:输入一个链表的头结点,从尾到头反过来打印出每个结点的值.
*
*/
public class main{
/**
* @param args
*/
public static void main(String[] args) {
//输入的链表有多个结点
Solution plr=new Solution();
LinkNode node1=new LinkNode();
LinkNode node2=new LinkNode();
LinkNode node3=new LinkNode();
node1.node_value=1;
node2.node_value=2;
node3.node_value=3;
node1.next=node2;
node2.next=node3;
plr.reverse(node1);
}
}
解法1(成功)
倒序输出链表有2个方法:
1 如果不改变原有链表,可以使用栈,依次压入后,弹出
2 改变原有链表,将原有链表进行倒序,然后从头开始读
package sword005;
public class Solution {
public void reverse(LinkNode headNode){
if(headNode.next == null) {
System.out.println(headNode.node_value);
return;
}
LinkNode newHead = null;
LinkNode now = headNode;
LinkNode next = headNode.next;
now.next = null;
LinkNode futher = null;
while(next!= null) {
futher = next.next;
// 设置now与next关系
next.next = now;
now = next;
next = futher;
}
while(now != null) {
System.out.println(now.node_value+" ");
now = now.next;
}
System.out.println();
}
}