1.数据的增加分为头插和尾插和中间插入:
头插:令每一个进来的新节点的next为指向头,然后改头为新节点
尾插:令Current+1的节点为新节点
中间插入:找到你想插入的位置的前一个节点,让这个新结点的next->前一个节点的后一个节点,再让前一个节点指向新节点
public void add(int data,int index) {
if (head == null) {
head = new Node(data, null);
} else {
if (index == 0) {
Node node = new Node(data, head);
head = node;
} else {
Node node = head;
for (int i = 0; i < index-1; i++) {
node = node.getNext();
}
Node node1 = new Node(data,node.getNext());
node.setNext(node1);
}
}
CuurentIndex++;
}
2.数据的删除实现:
先找到你想找的那个节点的前一个结点让(get(next))->next->next
public int delete(int index){
if (index==0){
head=head.getNext();
}else {
Node node = head;
for (int i = 0; i < index - 1; i++) {
node = node.getNext();
}
node.setNext(node.getNext().getNext());
}
CuurentIndex--;
return index;
}
3.数据的修改实现:
先找到你想找的那个节点直接set Data(data)
public void updata(int index,int data){
Node node=head;
for (int i = 0; i
4.数据的查询实现:
直接根据下标寻找返回data
public Integer select(int index){
Node node=head;
for (int i = 0; i
5.打印所有链表:
根据预设的CurrentIndex进行循环查找打印
public String linkToString(){
String result="[";
for (int i = 0; i
工具代码
package Fengzhuang.lianbiao;
public class Superlink {
private Node head;
private int CuurentIndex=-1;
//链表对于数据的增加
public void addToHead(int data){
this.add(data,0);
}
public void addToTail(int data){
this.add(data,CuurentIndex+1);
}
//链表对于数据的插入
public void add(int data,int index) {
if (head == null) {
head = new Node(data, null);
} else {
if (index == 0) {
Node node = new Node(data, head);
head = node;
} else {
Node node = head;
for (int i = 0; i < index-1; i++) {
node = node.getNext();
}
Node node1 = new Node(data,node.getNext());
node.setNext(node1);
}
}
CuurentIndex++;
}
//链表对于数据的删除
public int delete(int index){
if (index==0){
head=head.getNext();
}else {
Node node = head;
for (int i = 0; i < index - 1; i++) {
node = node.getNext();
}
node.setNext(node.getNext().getNext());
}
CuurentIndex--;
return index;
}
//链表对于数据的修改
public void updata(int index,int data){
Node node=head;
for (int i = 0; i
测试代码 头插和尾插的时间效率
public static void main(String[] args) {
Superlink superlink=new Superlink();//head:6毫秒 tail:8291毫秒
long Start=System.currentTimeMillis();
for (int i = 0; i <100000; i++) {
superlink.addToHead(i);
}
long end=System.currentTimeMillis();
System.out.println(end-Start);
}



