Java中 单链表简单实现,插入删除等功能
//节点结构
class Link {
int data;
Link next;
public Link(int data) {
this.data = data;
}
//打印节点数据
public void show() {
System.out.print(data + " ");
}
}
//单链表
public class LinkList {
private Link head;
//判空
public boolean isEmpyt() {
return (head == null);
}
//前插
public void insertFirst(int data) {
Link newLink = new Link(data);
newLink.next = head;
head = newLink;
}
//前删
public Link deleteFirst() {
Link tmp = head;
head = head.next;
return tmp;
}
//查找
public Link find(int key) {
Link tmp = head;
while (tmp != null) {
if (tmp.data == key)
return tmp;
tmp = tmp.next;
}
return null;
}
//查找删除
public Link delete(int key) {
Link curr = head;
Link pre = head;
while (curr.data != key) {
if (curr.next == null)
return null;
else {
pre = curr;
curr = curr.next;
}
}
if (curr == head)
head = head.next;
else pre.next = curr.next;
return curr;
}
//打印链表
public void show() {
Link tmp = head;
System.out.println();
while (tmp != null) {
tmp.show();
tmp = tmp.next;
}
System.out.println();
}
public static void main(String[] args) {
LinkList ll = new LinkList();
ll.insertFirst(1);
ll.insertFirst(2);
ll.insertFirst(3);
ll.insertFirst(4);
ll.show();
ll.find(1).show();
ll.deleteFirst().show();
ll.delete(1).show();
ll.show();
System.out.println(ll.isEmpyt());
}
}