Node对象 内部有valuenext

链表 - 图1

接口设计

与arraylist很多接口相同,add remove clear等;
但是不能用继承,它们两个没有什么可以抽取到父类的公共代码。
但是可以用接口,只声明公共接口,不实现。

代码理解

Node为单独类,里面保存值和下一个node的引用。

  1. public class Test {
  2. public static void main(String[] args) {
  3. // 创建了三个Node
  4. ListNode list1 = new ListNode(1);
  5. ListNode list2 = new ListNode(2);
  6. ListNode list3 = new ListNode(3);
  7. // 将他们串起来
  8. list1.next = list2; // 就相当于在类里面的 ListNode next = new ListNode(2);
  9. list2.next = list3;
  10. // 输出一下
  11. System.out.println(list1.next.next.val); //3
  12. }
  13. }
  14. class ListNode{
  15. int val;
  16. ListNode next; // 声明next变量为ListNode 用的时候再给它赋值 这是一个引用 类似指针
  17. public ListNode(int val){
  18. this.val = val;
  19. }
  20. }

链表 - 图2

练习 — 反转链表

https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/

  1. public class Solution {
  2. public ListNode reverseList(ListNode head){
  3. ListNode c = head;
  4. ListNode n = null;
  5. ListNode p = null;
  6. while(c!= null ){
  7. n = c.next;
  8. c.next = p;
  9. p = c;
  10. c = n;
  11. }
  12. return p;
  13. }
  14. }