Java实现单链表
public class SingleLinkedList {
Node head=new Node(0);
//添加一个节点
public void add(Node node){
Node temp= head;
while(true){
// 如果节点的next为null,说明已经到了链表的末尾
if(temp.next== null){
break;
}
temp= temp.next;
}
temp.next= node;
}
// 打印这个单链表的所有数据
public void print(){
Node temp= head;
if(temp.next== null){
System.out.println("空链表");
}
while (true){
temp = temp.next;
if(temp==null){
break;
}
System.out.println(temp.data);
}
}
// 得到链表的长度
public int length(){
Node temp= head;
int length= 0;
while (true){
temp= temp.next;
if(temp==null){
break;
}
length+= 1;
}
return length;
}
// 输出第i个节点的数据
public void getI(int i){
int flag= -1;
Node temp= head;
while(true){
temp= temp.next;
if(temp== null){
System.out.println("输入的编号有误!");
break;
}
flag+= 1;
if(i== flag){
System.out.println("编号为"+i+"的节点的数据为:"+temp.data);
return;
}
}
}
// 删除编号为i的节点
public void deleteI(int i){
Node temp= head;
int flag= -1;
if(temp.next== null){
System.out.println("此单链表为空");
}
if(i<0||i>length()){
System.out.println("输入的编号有误");
}
while (true) {
//如果要删除的节点为0
if(i== 0){
temp.next= temp.next.next;
break;
}
//如果这个节点已经是最后一个节点
if(temp.next== null){
break;
}
temp= temp.next;
flag+= 1;
if(flag== (i-1 )){
//已经找到了待删除节点的前一个节点
temp.next= temp.next.next;
}
}
}
}