从头到尾打印链表

image.png
image.png
链表ListNode
链表操作方法
一些节点,除了最后一个节点以外的每一个节点都存储着下一个节点的地址,依据这种方法依次连接, 构成一个链式结构。
image.png

class ListNode {        //类名 :Java类就是一种自定义的数据结构
    int val;            //数据 :节点数据 
    ListNode next;      //对象 :引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似
}

方法一 倒序遍历

  • 先把链表写出来,然后倒着遍历输出
  • 需要知道链表的长度,所以给定int length = 0;
  • 首先判断当前链表是不是空链表
  • 判断当前节点是否为null,如果不是则加1
  • while(cur.next != null){
        length++;
        cur = cur.next;
    }
  • 链表写好之后倒叙读取链表的数据 head.val 然后再head.next 移动头节点的指针
    image.png

    方法二 栈 先进后出

    利用栈先进后出的特点

    Stack是栈类

  • 首先把这个链表定义为一个新的栈对象
  • 然后定义一个临时指针是头部节点
  • 当这个临时指针指向null的时候循环结束,如果不是null,则一直像栈里push数据(入栈操作),本程序就是push了对象
  • push完毕后用size判断栈的长度
  • 然后定义一个等长的数组用于存放出栈的数据
  • 因为先进后出原则,出栈直接顺序出栈即可
  • .val就是栈对象或者链表对象对应的值

    int[] print = new int[size];
    for (int i = 0; i < size; i++) {
        print[i] = stack.pop().val;
    }

    image.png


Loccy
4 声望1 粉丝