1.链表的结构
在java中要实现一个链表,首先得定义链表的数据结构,也就是定义一个表示链表的类。如下:
package cn.edu.ahui; class ListNode{ int val; ListNode next = null; public ListNode(int val){ this.val = val; } }
val表示这个链表结点中存储的数据,next 指向下一个链表节点。每当new 一个ListNode 实例,在内存中就会为其分配内存空间,它就会有一个内存地址。next就是用来存放下一个结点的内存地址的。
2.正向创建一个链表
package cn.edu.ahui; class ListNode{ int val; ListNode next = null; public ListNode(int val){ this.val = val; } } public class BuildListForward { ListNode first,last,listNode; public ListNode buildList(int input[]){ if(input.length > 0){ for(int i = 0; i < input.length; i++ ){ listNode = new ListNode(input[i]); listNode.next = null; if(first == null){ first = listNode; last = listNode; } else{ last.next = listNode; last = listNode; } } } return first; } public static void main(String[] args) { int [] data = {11,12,13,14}; BuildListForward buildListForward = new BuildListForward(); ListNode listNode = buildListForward.buildList(data); while(listNode.next != null){ System.out.println("listNode.val: " + listNode.val + " " + "listNode.next: "+listNode.next); listNode = listNode.next; } System.out.println("listNode.val: " + listNode.val + " " + "listNode.next: "+listNode.next); } }
运行的结果:
listNode.val: 11 listNode.next: cn.edu.ahui.ListNode@1db9742listNode.val: 12 listNode.next: cn.edu.ahui.ListNode@106d69clistNode.val: 13 listNode.next: cn.edu.ahui.ListNode@52e922listNode.val: 14 listNode.next: null
3.反向创建一个链表
运行的结果:package cn.edu.ahui; public class BuildListBackForward { private ListNode first,listNode; public ListNode buildNode(int[] input){ first = null; if(input.length > 0){ for(int i = 0; i < input.length; i++){ listNode = new ListNode(input[i]); listNode.next = first; first = listNode; } } return first; } public static void main(String[] args){ int[] data = {15,17,18,20}; BuildListBackForward blbf = new BuildListBackForward(); ListNode list = blbf.buildNode(data); while(list.next != null){ System.out.println("listNode.val: " + list.val + " " + "listNode.next: "+list.next); list = list.next; } System.out.println("listNode.val: " + list.val + " " + "listNode.next: "+list.next); } }
listNode.val: 20 listNode.next: cn.edu.ahui.ListNode@1db9742
listNode.val: 18 listNode.next: cn.edu.ahui.ListNode@106d69c
listNode.val: 17 listNode.next: cn.edu.ahui.ListNode@52e922
listNode.val: 15 listNode.next: null