java 模拟单链表操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 模拟单链表操作相关的知识,希望对你有一定的参考价值。

节点类

public class ListNode {
int data;//数据
ListNode next;//指针
public 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);

  }

}

public static void deleteNodeByIndex(ListNode startNode,int start,int end){//删除节点 start值输入0
if(startNode==null){return;}
if(start<end){//从上往下扫
start++;
startNode=startNode.getNext();
deleteNodeByIndex(startNode,start,end);//递归删除
}else{
startNode.setData(startNode.getNext().getData());
startNode.setNext(startNode.getNext().getNext());
}
}

public static void putNode(ListNode startNode,ListNode dataNode,int start,int end){//参数1开始节点 参数2数据节点

  if(startNode==null){return;}
  if(start<end){
      start++;
      startNode=startNode.getNext();
      putNode(startNode,dataNode,start,end);
  }else{
      dataNode.setNext(startNode.getNext());
      startNode.setNext(dataNode);
  }

}

}

以上是关于java 模拟单链表操作的主要内容,如果未能解决你的问题,请参考以下文章

JAVA模拟顺序表新增,模拟单链表新增

集合操作 用单链表模拟有序集合,实现集合的加入一个元素、删除一个元素、集合的交、并、差运算。

java数据结构:单链表常见操作代码实现

java-----单链表

java-----单链表

Java实现单链表(步骤详解+源码)