从头到尾打印链表
链表 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;}