offer 06 从头至尾打印链表

从头至尾打印链表

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

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就是栈对象或者链表对象对应的值ide

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

    image.png

相关文章
相关标签/搜索