一、单链表逆序输出思想
队列是先进先出 而栈是先进后出 所以我们可以将单链表遍历,然后将每个节点的值放入栈中,放完之后将元素pop出来输出
如果不太懂单链表的友友们可以参考这里https://blog.csdn.net/kitiyang/article/details/123181868
二、代码实现
1.创建节点类
//定义节点
class HeroNode{
//表示data数据域
public int no;
public String name;
public String nickname;
//下一节点引用
HeroNode next;
public HeroNode(int no,String name,String nickname){
this.name=name;
this.no=no;
this.nickname=nickname;
}
@Override
public String toString() {
return "HeroNode{" +
"no=" + no +
", name='" + name + '\'' +
", nickname='" + nickname + '\'' +
'}';
}
}
2.创建实现方法的类
然后再创建一个专门写增删改查的方法和定义头节点的类
class SingleLinkedList{
//初始化头结点 头结点不动 不存放任何具体数据
private HeroNode head=new HeroNode(0,"","");
public HeroNode getHead() {
return head;
}
//从尾到头打印单链表(逆序打印单链表) 逆序打印单链表 利用栈结构
public void printReverseNode(HeroNode head){
if (head.next==null){
System.out.println("空链表!");
return;
}
Stack<HeroNode> stack=new Stack<>(); //定义一个栈的类
HeroNode temp=head.next;
while (temp!=null){
stack.add(temp); //将每个节点的值压入栈里
temp=temp.next;
}
//将栈的元素便利
while (stack.size()>0){ //大于0表示栈中还有元素
System.out.println(stack.pop()); //stack
}
}
}
2.运行
如果一开始看的时候不太懂我定义的类 和方法可以通过链接学习前面的知识。https://blog.csdn.net/kitiyang/article/details/123181868