JAVA 单链表的实现
public class Singlelist {
public static void main(String[] args) {
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
Node node4 = new Node(4);
Node node5 = new Node(5);
List singleList = new List();
singleList.getHead().setNext(node1);
node1.setNext(node2);
node2.setNext(node3);
node3.setNext(node4);
node4.setNext(node5);
singleList.delete(3);
singleList.traverse();
}
}
class List{
private Node Head = new Node();
public Node getHead(){
return Head;
}
//遍历链表
public void traverse(){
if (Head.getNext()==null){
System.out.println("链表为空");
}
Node node = Head.getNext();
while (node!=null){
System.out.println(node);
node = node.getNext();
}
}
//给链表添加元素 头插
public boolean headPlug(int data){
Node node = Head;
Node temp = new Node(data);
temp.setNext(Head.getNext());
Head.setNext(temp);
return true;
}
//给链表添加元素 尾插
public boolean tailInsertion(int data){
Node node = Head;
while (node.getNext()!=null){
node = node.getNext();
}
Node temp = new Node(data);
node.setNext(temp);
return true;
}
//链表删除元素
public boolean delete(int data){
Node node = Head;
while (node.getNext()!=null && node.getNext().getData()!=data){
node = node.getNext();
}
if(node.getNext()==null)
return false;
Node temp = new Node();
temp = node.getNext();
node.setNext(temp.getNext());
temp.setNext(null);
return true;
}
}
class Node{
private int data;
private Node next;
public Node() {
}
public Node(int data) {
this.data = data;
}
public int getData() {
return data;
}
public Node getNext() {
return next;
}
public void setData(int data) {
this.data = data;
}
public void setNext(Node next) {
this.next = next;
}
@Override
public String toString() {
return "Node{" +
"data=" + data+
'}';
}
}