classListNode{int val;ListNode next;ListNode(int x){
val = x;}// 递归打印链表publicvoidprint(){System.out.print(this.val);if(this.next !=null){System.out.print("->");this.next.print();}}}
数组内容构造链表
publicclassCreateListNode{publicstaticvoidmain(String[] args){int[] a ={1,2,3,4,5};ListNode dummy =newListNode(-1);//虚拟头结点ListNode r, s;
r = dummy;// 定义尾结点,尾节点动,原链表不动for(int i : a){
s =newListNode(i);
r.next = s;
r = r.next;}
r.next =null;
dummy.print();//-1->1->2->3->4->5
dummy.next.print();//1->2->3->4->5}}
构造环形链表
publicstaticvoidmain(String[] args){int[] a ={3,2,0,4};ListNode dummy =newListNode(-1);//虚拟头结点ListNode r, s, p =null;
r = dummy;// 定义尾结点,尾节点动,原链表不动for(int i : a){
s =newListNode(i);
r.next = s;
r = r.next;if(i==2){//留下2号节点
p = r;}}
r.next = p;// 检测环第一个节点ListNode res =detectCycle(dummy.next);if(res !=null)System.out.println(res.val);// 打印环形链表ListNode head = dummy.next;
r = head;// 这里不能直接全部打印,因为环形链表是一个死循环for(int i =0; i <6; i++){System.out.println(r.val);
r = r.next;}//3,2,0,4, 2, 0}
/*1.一个个添加节点 */int[] input ={1,2,3,4,5};ListNode head =null;for(int i =0; i < input.length; i++){if(head ==null){
head =newListNode(input[i]);}else{
head.add(input[i]);}}
head.print();// 1->2->3->4->5