img

    1. package com.atguigu.linkedlist;
    2. import java.util.Stack;
    3. /**
    4. * ClassName: <br/>
    5. * Description: <br/>
    6. * Date: 2021-02-19 14:17 <br/>
    7. * @project data_algorithm
    8. * @package com.atguigu.linkedlist
    9. */
    10. public class TestStack {
    11. public static void main(String[] args) {
    12. Stack<String> stack = new Stack();
    13. // 入栈
    14. stack.add("jack");
    15. stack.add("tom");
    16. stack.add("smith");
    17. // 出栈
    18. // smith, tom , jack
    19. while (stack.size() > 0) {
    20. System.out.println(stack.pop());//pop就是将栈顶的数据取出
    21. }
    22. }
    23. }

    输出

    1. smith
    2. tom
    3. jack
    4. Process finished with exit code 0

    栈就是一个量筒,先入后出

    1. //方式2:
    2. //可以利用栈这个数据结构,将各个节点压入到栈中,然后利用栈的先进后出的特点,就实现了逆序打印的效果
    3. public static void reversePrint(HeroNode head) {
    4. if(head.next == null) {
    5. return;//空链表,不能打印
    6. }
    7. //创建要给一个栈,将各个节点压入栈
    8. Stack<HeroNode> stack = new Stack<HeroNode>();
    9. HeroNode cur = head.next;
    10. //将链表的所有节点压入栈
    11. while(cur != null) {
    12. stack.push(cur);
    13. cur = cur.next; //cur后移,这样就可以压入下一个节点
    14. }
    15. //将栈中的节点进行打印,pop 出栈
    16. while (stack.size() > 0) {
    17. System.out.println(stack.pop()); //stack的特点是先进后出
    18. }
    19. }