链表是啥?
就像是一个火车,一个个的车厢就是一个个构成链表的Node,每个Node存储着下一个Node,每个Node只关心自己的下个Node是什么不关心其他。
单向链表只保留对头节点的引用。
链表的java实现:
Node的实现
public class Node {
//数据域
private int data;
//节点域,存放下一个节点
private Node next;
public Node(int data){
this.data= data;
}
public int display(){
return this.data;
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
LinkList的实现
public class LinkList {
//链表的头节点,每个链表只关心自己的头节点是什么就可以找到所有的数据
private Node first;
//构造空链表
public LinkList(){
first=null;
}
//在头节点处插入node
public void insertFirst(int data){
Node node = new Node(data);
node.setNext(first);
first=node;
}
//删除头节点
public Node deleteFirst(){
Node delete = first.getNext();
first=first.getNext();
return delete;
}
//根据数据查找节点
public Node selectNode(int value){
Node node=first;
while (node.getData()!=value){
if (node.getNext()==null){
return null;
}
node=node.getNext();
}
return node;
}
public String deleteNode(int value){
//当前的节点
Node node=first;
//上一个节点
Node previous=first;
while (node.getData()!=value){
if (node.getNext()==null){
return "false 未找到该节点";
}
previous=node;
node=node.getNext();
}
if (node==first){
first=first.getNext();
}else{
previous.setNext(node.getNext());
}
return "success 删除成功";
}
//显示所有的节点
public void display(){
Node node=first;
while (node!=null){
System.out.print(node.display()+" ");
node=node.getNext();
}
}
}