乐趣区

关于java:offer-06-从头到尾打印链表

从头到尾打印链表



链表 ListNode
链表操作方法
一些节点,除了最初一个节点以外的每一个节点都存储着下一个节点的地址,根据这种办法顺次连贯,形成一个链式构造。

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 挪动头节点的指针

    办法二 栈 先进后出

    利用栈先进后出的特点

    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;}

退出移动版