java代码简单实现单链表的增删改查
public class StudentNode {
private StudentNode studentNodeHeard;
//学号
private Integer number;
//名字
private String name;
//年龄
private Integer age;
//下一个节点
private StudentNode next;
public StudentNode() {
}
public StudentNode(int number, String name, int age) {
this.number = number;
this.name = name;
this.age = age;
}
//设置节点头(初始化链表头的时候需要调此方法)
public void setStudentNodeHeard() {
if (studentNodeHeard == null) {
this.studentNodeHeard = new StudentNode(0, "节点头部", 0);
return;
}
}
//链表添加
public void addNode(StudentNode studentNode) {
StudentNode temp = studentNodeHeard.next;
StudentNode upNode = studentNodeHeard;
while (temp != null) {
//以节点某个属性排序(如果只是按插入顺序将次判断去掉即可)
if (studentNode.number < temp.number) break;
upNode = temp;
temp = temp.next;
}
studentNode.next = temp;
upNode.next = studentNode;
System.out.println("添加成功");
}
//删除指定的节点
public void deleted(Integer number) {
StudentNode deletedNode = null;
StudentNode temp = studentNodeHeard.next;
StudentNode upStudentNode = null;
if (number == null) return;
while (temp != null) {
if (temp.number == number) {
deletedNode = temp;
break;
}
upStudentNode = temp;
temp = temp.next;
}
if (deletedNode == null) {
System.out.println("删除失败没有学号为:" + number + "学生");
return;
}
upStudentNode.next = deletedNode.next;
System.out.println("删除成功");
}
//遍历节点
public void list() {
StudentNode temp = studentNodeHeard.next;
if (temp == null) {
System.out.println("链表为空");
return;
}
while (temp != null) {
System.out.println(temp);
temp = temp.next;
}
}
//根据学号需改
public void update(StudentNode studentNode) {
if (studentNode == null || studentNode.number == null) return;
StudentNode upNode = studentNodeHeard;
StudentNode temp = studentNodeHeard.next;
boolean flag = true;
if (temp == null) {
System.out.println("链表为空");
return;
}
while (temp != null) {
if (temp.number.equals(studentNode.number)) {
studentNode.next = temp.next;
upNode.next = studentNode;
flag = false;
break;
}
upNode = temp;
temp = temp.next;
}
if (flag) {
System.out.println("修改失败:没有找到number为" + studentNode.number + "的学生");
return;
}
System.out.println("修改成功");
}
//根据学号查询
public void getNodeByNumber(Integer number) {
if (number == null) return;
StudentNode temp = studentNodeHeard.next;
boolean flag = true;
if (temp == null) {
System.out.println("链表为空");
return;
}
while (temp != null) {
if (temp.number.equals(number)) {
System.out.println(temp);
flag = false;
break;
}
}
if (flag) {
System.out.println("没有找到学号为:" + number + "信息");
}
}
}