Java 单链表简单实现
实现功能并不完全,只有添加,删除,和遍历功能,后续还会继续添加
定义节点属性
class Node{ //定义节点属性
public int Data;
public Node next = null;
public Node(int Data){
this.Data = Data;
}
}
定义节点方法
class ListMe {
Node head = null;//头结点为空
void addNode(int data){ //添加节点
Node newNode = new Node(data); //创建新节点
if(head == null){ //如果头结点为空,就让节点作为头结点
head = newNode;
return;
}
Node temp = head;
while(temp.next!=null){ //让节点遍历都最后一个位置
temp = temp.next;
}
temp.next = newNode; //添加节点
}
boolean delNode(int position){ //删除节点
if(position>listLength()||position<1){ //如果删除的位置不在指定地方,就返回false
return false;
}
if(position == 1){ //头结点更换
head = head.next;
return true;
}
int i = 1;
Node preNode = head; //前驱节点
Node curNode = preNode.next; //后一位节点
while(curNode != null){ //后一位不为空,就遍历查找到指定位置的节点
if( i == position){ //查找到之后就让前一位直接连到后一位节点位置上
preNode.next = curNode.next;
return true;
}
preNode = curNode; //节点后推
curNode = curNode.next;
i++;//位置
}
return false;
}
int listLength(){ //返回链表长度
int length = 0;
Node curNode = head;
while(curNode != null){
length++;
curNode = curNode.next;
}
return length;
}
void print(){ //打印链表内容
Node curNode = head;
while(curNode != null){
System.out.print(curNode.Data+" ");
curNode = curNode.next;
}
}
}
主方法中测试数据
public class Main{
public static void main(String[] args){
ListMe a = new ListMe();
a.addNode(2);
a.addNode(1);
a.addNode(5);
a.addNode(4);
a.addNode(3);
a.print();
System.out.println();
System.out.println(a.listLength());
if(a.delNode(1)){
a.print();
System.out.println();
System.out.println(a.listLength());
}else{
System.out.println("异常");
}
}
}
以下是运行结果
2 1 5 4 3
5
1 5 4 3
4