已知一条链表,不知道其长度的情况下:通过遍历,打印链表的每个元素。通过遍历,找到链表的最后一个结点。通过遍历,找到链表的倒数第二个结点。通过遍历,找到链表的第 n 个结点。(链表的长度 >= n)通过遍历,计算链表中元素的个数。通过遍历,找到链表中是否包含某个元素。
- 代码
Main类
package Java41_0202;
public class Main {
//通过这个方法创建出一个固定内容的链表
//用头结点代替整个链表
//让方法把头结点返回去
public static Node creatList() {
Node a = new Node(1);
Node b = new Node(2);
Node c = new Node(3);
Node d = new Node(4);
a.next = b;
b.next = c;
c.next = d;
d.next = null;
return a;
}
public static void main(String[] args) {
Node head = creatList();
//1.链表遍历
// for (Node cur = head; cur != null; cur = cur.next) {
// System.out.println(cur.val);
// }
//2.遍历链表,并找到最后一个节点
// Node cur = head;
// while(cur != null && cur.next != null) {
// cur = cur.next;
// }
// //此时循环结束,则 cur 指向了最后一个节点
// System.out.println(cur.val);
// }
//3.遍历链表,并找到倒数第二个节点
//特点是它的 .next.next 为 null
// Node cur = head;
// while (cur != null && cur.next != null && cur.next.next != null) {
// cur = cur.next;
// }
// System.out.println(cur.val);
//4. 取链表的第 N 个节点(从 1 开始算的)
// int N = 3;
// Node cur = head;
// for(int i = 1; i < N; i++) {
// cur = cur.next;
// }
// //此时 cur 指向的元素,就是正数第 N 个元素
// System.out.println(cur.val);
//5.获取链表的长度
//每次遍历一个元素就 count++ 一次
int count = 0;
for (Node cur = head; cur != null; cur = cur.next) {
count++;
}
System.out.println(count);
//6.查找链表是否存在某个元素
// int toFind = 3;
// Node cur = head;
// for (; cur != null; cur = cur.next) {
// if (cur.val == toFind) {
// break;
// }
// }
// if (cur != null) {
// System.out.println("找到了");
// } else {
// System.out.println("没找到");
// }
}
}
Node 类
package Java41_0202;
//使用 Node 表示节点
public class Node {
public int val;
public Node next = null;
public Node(int val) {
this.val = val;
}
}
- 结果
1.链表遍历
2.遍历链表,并找到最后一个节点
3.遍历链表,并找到倒数第二个节点
4.取链表的第 N 个节点(从 1 开始算的)
5.获取链表的长度
6.查找链表是否存在某个元素