定义节点
@Data
public class LinkNode {
private int data;
private LinkNode next;
}
链表的常规操作及测试
public class LinkNodeProcess {
private LinkNode head;
private LinkNode last;
private int size;
public void insert(int data, int index) throws Exception{
if(index<0||index>size){
throw new IndexOutOfBoundsException("超出链表中长度");
}
LinkNode linkNode = new LinkNode();
linkNode.setData(data);
if(size==0){
head = linkNode;
last = linkNode;
}else if(index==0){
linkNode.setNext(head);
head = linkNode;
}else if(index==size){
last.setNext(linkNode);
last = linkNode;
}else{
final LinkNode preNode = this.get(index - 1);
linkNode.setNext(preNode.getNext());
preNode.setNext(linkNode);
}
size++;
}
public LinkNode get(int index) throws Exception {
if(index<0||index>=size){
throw new IndexOutOfBoundsException("超出链表中长度");
}
LinkNode linkNode = head;
for(int i = 0;i<index;i++){
linkNode = head.getNext();
}
return linkNode;
}
public LinkNode remove(int index) throws Exception{
if(index<0||index>=size){
throw new IndexOutOfBoundsException("超出链表中长度");
}
LinkNode removedNode = null;
if(index==0){
removedNode = head;
head = head.getNext();
}else if(index==size-1){
last = this.get(index - 1);
removedNode = last.getNext();
last.setNext(null);
}else{
final LinkNode prevNode = this.get(index - 1);
removedNode = prevNode.getNext();
prevNode.setNext(removedNode.getNext());
removedNode.setNext(null);
}
size--;
return removedNode;
}
public void output(){
LinkNode temp = head;
while(temp!=null){
System.out.println(temp.getData());
temp = temp.getNext();
}
}
public static void main(String[] args) throws Exception {
LinkNodeProcess myLinkedList = new LinkNodeProcess();
myLinkedList.insert(3,0);
myLinkedList.insert(7,1);
myLinkedList.insert(9,2);
myLinkedList.insert(5,3);
myLinkedList.insert(6,1);
myLinkedList.output();
myLinkedList.remove(0);
myLinkedList.output();
}
}