节点类: public class ListNode { int data;//数据 ListNode next;//指针 ListNode(int x){data=x;} public int getData() { return data; } public void setData(int data) { this.data = data; } public ListNode getNext() { return next; } public void setNext(ListNode next) { this.next = next; } 二:生成链表(头插法 尾插法)

public class ListNodeUtil { //链表

public static ListNode createHeadAddNodeList(int[] dataArray){//头插法插入数据 ListNode headNode=new ListNode(0);//创建头结点 headNode.setNext(null); for(int i=0;i<dataArray.length;i++){ ListNode newNode=new ListNode(dataArray[i]);//赋值数据 newNode.setNext(headNode.getNext());//上一节点的指向赋值给下一节点的指向 headNode.setNext(newNode);//头结点指向尾部节点 } return headNode; } public static ListNode createEndAddNodeList(int[] dataArray){//头插法插入数据 ListNode headNode=new ListNode(0);//创建头结点
headNode.setNext(null); ListNode pointNode=headNode;//指针节点 一直指向尾节点 for(int i=0;i<dataArray.length;i++){ ListNode newNode=new ListNode(dataArray[i]); newNode.setNext(pointNode.getNext()); pointNode.setNext(newNode); pointNode=newNode; } return headNode; }

public static void printHeadAddNodeList(ListNode start){

  if(start!=null){
	  System.out.println(start.getData());
	  start=start.getNext();
	  printHeadAddNodeList(start);//递归输出数据
	  
  }

}

}

头插法与尾出发的区别在与尾插法多了一个指针节点,该节点一直指向链表的尾部