版权声明:转载请注明出处 https://blog.csdn.net/fan_lulu/article/details/83096876
以下代码有参考
https://my.oschina.net/u/2822116/blog/712874
包结构
代码
package demo1;
import java.util.Stack;
class ListNode {
ListNode next = null;
int data;
public ListNode(int data) {
this.data = data;
}
}
public class Solution {
public static void main(String args[]){
ListNode node1=new ListNode(1);
ListNode node2=new ListNode(2);
ListNode node3=new ListNode(3);
ListNode node4=new ListNode(4);
//node1.data=1;
//node2.data=2;
//node3.data=3;
//node4.data=4;
node1.next=node2;
node2.next=node3;
node3.next=node4;
node4.next=null;
printListFromTailToHead(node1);
}
public static void printListFromTailToHead(ListNode Newnode){
Stack<Integer> stack = new Stack<Integer>();
while (Newnode!=null){
stack.push(Newnode.data);
Newnode=Newnode.next;
}
while(!stack.isEmpty()){
System.out.println(stack.pop());
}
}
}
最后一段代码也可替换为
public static void printListFromTailToHead(ListNode Newnode){
Stack<ListNode> stack = new Stack<ListNode>();
while (Newnode!=null){
stack.push(Newnode);
Newnode=Newnode.next;
}
while(!stack.isEmpty()){
System.out.println(stack.pop().data);
}
}
两者的区别在于我们要在stack中存储链表还是链表中的数据,从而stack在pop时也会选择是pop链表还是pop data
结果
部分知识点 :this和super
class ListNode {
ListNode next = null;
int data;
public ListNode(int data) {
this.data = data;
}
}
以上代码中,this的作用是用来区别对象的成员变量和方法的形参,this.data用来表示左边的值为为成员变量,而不是这个构造函数的形式参数。 super用来访问父类的方法或成员变量。当自雷的方法或成员变量与父类有相同名字时也会覆盖父类的方法或成员变量,要想访问父类的方法或成员变量只能通过super关键字来访问。
易错面试题:
package demo3;
class Base{
public Base(){
System.out.println("base");
}
}
class Sub extends Base{
public Sub(){
System.out.println("sub");
super();
}
}
public class Test {
public static void main(String args[]){
Base s=new Sub();
}
}
运行后结果:
改正后代码:
package demo3;
class Base{
public Base(){
System.out.println("base");
}
}
class Sub extends Base{
public Sub(){
super();
System.out.println("sub");
}
}
public class Test {
public static void main(String args[]){
Base s=new Sub();
}
}
运行后
父类和子类new时
结果
结果均为
若代码为
结果为
以上代码部分参考: