Node.java 单向链表增加、删除
public class Node {
Object data;
Node next;
public Node(Object data, Node next) {
super();
this.data = data;
this.next = next;
}
}
MylinkedList.java
public class MylinkedList {
private Node head;//指向头结点的引用
private int size;//结点数量
public void add(Object data) {
Node newNode=new Node(data,null);//新节点
if(size==0) { //如果是空链表
head=newNode; //新节点指向头节点
}else { //不是空链表
Node tmp=head; //tmp引用头节点 。保护头节点
while(tmp.next!=null) {
tmp=tmp.next;
}
tmp.next=newNode;
}
size++;
}
@Override
public String toString() {
Node tmp=head;
StringBuilder sb=new StringBuilder();
while(tmp!=null) { //循环遍历 记录结点上的值
sb.append(tmp.data+",");
tmp=tmp.next;
}
return sb.toString();
}
public void remove(Object data) {
Node tmp=head;
if(tmp.data.equals(data)) {
head=tmp.next;
tmp=null;
return; //void return表示结束程序
}
while(tmp.next!=null){
if(tmp.next.data.equals(data)) { //找到要删除结点的前一结点
Node font=tmp; //待删除结点的前一结点
Node cur=tmp.next; //待删除结点
Node back=tmp.next.next;//待删除结点的后一结点
font.next=back;
cur.next=null;
}
tmp=tmp.next;
}
}
public static void main(String[] args) {
MylinkedList list=new MylinkedList();
list.add(3);
list.add(4);
list.add(2);
list.add(3);
list.add(6);
list.add(7);
System.out.println(list);
list.remove(3);//删头结点
list.remove(3);//删中间结点
System.out.println(list);
}
}
结果



