单链表的理解
- 单链表是由一个个的节点连接而成的结构。它在内存中的地址不一定是相邻的。
- 实现单链表的过程中,比较难的是分析增删改查时应该在何时进行
单链表的实现
- 构造函数
易错点:受c++的影响,感觉Node head就已经调用了无参的构造函数了。不要忘记head需要new
class LinkList {
Node head;
public LinkList() {
head = new Node();
head.next = null;
}
public void add(Node node) {
Node temp = head;
while (true) {
if (temp.next == null)
break;
temp = temp.next;
}
temp.next = node;
node.next = null;
}
public void addByOrder(Node node) {
Node temp = head;
while (true) {
if (temp.next == null) {
temp.next = node;
break;
} else if (temp.next.id > node.id) {
node.next = temp.next;
temp.next = node;
break;
} else if (temp.next.id == node.id) {
System.out.println("error");
break;
}
temp = temp.next;
}
}
public void deleteNode(Node node) {
Node temp=head;
boolean flag=true;
while(true) {
if(temp.next==null)
break;
else if(temp.next.id==node.id) {
flag=false;
break;
}
temp=temp.next;
}
if(flag==false) {
temp.next=temp.next.next;
}
}
public void update(Node node) {
Node temp=head;
while(true) {
if(temp.next==null) {
System.out.println("未找到");
break;
}else if(temp.next.id==node.id) {
temp.next.name=node.name;
temp.next.nickName=node.nickName;
break;
}
temp=temp.next;
}
}
public void list() {
Node temp = head.next;
while (true) {
if (temp == null)
break;
else {
System.out.println(temp);
temp = temp.next;
}
}
}