手写单链表
定义一个ListNode类
public class ListNode { public int val; public ListNode next; public ListNode() { } public ListNode(int val) { this.val = val; } public ListNode(int val, ListNode next) { this.val = val; this.next = next; } }
用用头插法和尾插法完成链表的初始化
头插法实现相对比较简单
尾插法实现因为head不能变,所以需要一个辅助节点tem;
画图会比较容易理解。
import leetcode.dataType.ListNode; public class LeetCode_206 { public static void main(String[] args) { ListNode head; ListNode tem;//辅助节点 tem=head=null; int n = 5; //初始化链表 while (n >= 0) { ListNode node = new ListNode(n);//new并初始化一个节点 //头插法插入该节点 /*node.next = head; head = node;*/ //尾插法 if (head == null) { //如果是第一次插入 head = tem = node; } else { tem.next=node; tem=node; } n--; } while (head != null) { System.out.println(head.val); head = head.next; } } }