当我们想去将原本具有顺序的链表
按照原来具有顺序的方式,进行一个逆序的输出
我们可以去想出两种办法
1.一种是将这个原本的链表这个节点进行一个相关的反转
2.第二种就是利用栈的思想,将这个利用栈的先进后出的思想,将这个链表进行一个相关的打印
//第一种方式
//将单链表的反转
public static void reverseList(HeroNode head) {
if (head.next == null || head.next.next == null) {
return;
}
//定义一个辅助的指针(变量),帮助我们遍历我们原来的链表
HeroNode cur = head.next;
HeroNode next = null;
HeroNode reverseHead = new HeroNode(0, "", "");
while (cur != null) {
next = cur.next;
cur.next = reverseHead.next;
reverseHead.next = cur;
cur = next;
}
head.next = reverseHead.next;
}
利用栈的方式
//单链表的逆序打印代码
//可以利用这个栈的这个数据结构,将各个节点压入到栈中,然后利用栈的先进后出的特点
//就实现了逆序打印的效果
public static void reversePrint(HeroNode head) {
if (head.next == null) {
return;
}
Stack<HeroNode> stack = new Stack<HeroNode>();
HeroNode cur = head.next;
while (cur != null) {
stack.push(cur);
cur = cur.next;
}
while (stack.size()>0) {
System.out.println(stack.pop());
}
}
//利用栈进行一个测试
package Java.DataStructuresAndAlgorithms.DataStructures.LinkedList;
import java.util.Stack;
// import.java.util.Stack;
public class TestStack {
public static void main(String[] args) {
Stack<String> stack = new Stack();
stack.add("jack");
stack.add("tom");
stack.add("smith");
while (stack.size()>0) {
System.out.println(stack.pop());
}
}
}