单链表的插入
尾插法:使用一个临时结点直接找到最后一个结点 \(temp\),然后 \(temp.next = newNode, newNode.next = null\)
在中间结点插入一个结点:找到要插入结点的位置的前一个位置的结点 \(temp\),让待插入结点的 \(next\) 域指向 \(temp\) 的后面的结点,最后让 \(temp\) 的 \(next\) 域指向待插入结点即可。即 \(newNode.next = temp.next,temp.next = newNode.next\)
//在链表的最后插入一个元素,尾插法
public void insertList(PersonNode personNode) {
PersonNode temp = head;
while(temp.next != null) {//找到最后一个结点
temp = temp.next;
}
temp.next = personNode;
}
//按照结点顺序插入
public void insertListByOrder(PersonNode personNode) {
PersonNode temp = head;
while(temp.next != null && temp.next.STNumber != personNode.STNumber && temp.next.STNumber < personNode.STNumber) {
temp = temp.next;
}
if(temp.next == null) {
temp.next = personNode;
} else if(temp.next.STNumber == personNode.STNumber) {
System.out.printf("学号 %d 已经存在无法插入\n", personNode.STNumber