链表的实现

链表的创建

//链表的管理

class SingleLinked {
    Node HeadNode = new Node(0, "", "");

//增加数据
public void add(Node node) {
    Node temp = HeadNode;
    while (true) {
        if (temp.next == null) {
            break;
        }
        temp = temp.next;
    }
    temp.next = node;
}

//按顺序添加节点
public void addByOrder(Node node) {
    Node temp = HeadNode;
    while (true) {
        if (temp.next == null) {//尾节点
            temp.next = node;
            break;
        } else if (temp.no < node.no && temp.next.no > node.no) {
            node.next = temp.next;
            temp.next = node;
            break;
        } else if (temp.no == node.no) {
            System.out.println("节点已经存在");
            break;
        }
        temp = temp.next;
    }
}

//修改
public void update(Node newNode) {
    if (HeadNode.next == null) {
        System.out.println("链表为空");
        return;
    }
    Node temp = HeadNode.next;
    while (true) {
        if (temp.next == null) {
            throw new RuntimeException("no信息错误");
        }
        if (temp.next.no == newNode.no) {
            temp.next.name = newNode.name;
            temp.next.nickName = newNode.nickName;
            break;
        }
        temp = temp.next;
    }
}

//删除
public void delete(int no) {
    if (HeadNode.next == null) {
        System.out.println("链表为空");
        return;
    }
    Node temp = HeadNode.next;
    while (true) {
        if (temp.next == null) {
            System.out.println("没有对应的节点");
            return;
        }
        if (temp.next.no == no) {
            temp.next = temp.next.next;
            break;
        }
        temp = temp.next;
    }
}

//    显示链表
public void showLinked() {
    if (HeadNode.next == null) {
        System.out.println("链表为空");
        return;
    }
    Node temp = HeadNode.next;
    while (true) {
        if (temp.next == null) {
            System.out.println(temp);
            break;
        }
        System.out.println(temp);
        temp = temp.next;
    }
}

链表中的每个节点

//节点类
class Node {
    public int no;
    public String name;
    public String nickName;
    public Node next;

    public Node(int no, String name, String nickName) {
        this.no = no;
        this.name = name;
        this.nickName = nickName;
    }

    @Override
    public String toString() {
        return new StringJoiner(", ", Node.class.getSimpleName() + "[", "]")
                .add("no=" + no)
                .add("name='" + name + "'")
                .add("nickName='" + nickName + "'")
                .toString();
    }
}
posted @ 2020-05-11 20:54  爱敲代码的小游子  阅读(14)  评论(0)    收藏  举报