链表 添加 遍历 (有序添加,重复过滤)

class _List{
    private _Node head = new _Node(0, "", "");

    public void add(_Node node) {
        _Node temp = head;
        while (true) {
            if (temp.next == null) {//当前的next这个属性是不是null
                break;
            }
            temp = temp.next;//temp等于下一个
        }
        temp.next = node;
    }

    public void addByOrder(_Node node) {
        _Node temp = head;
        boolean flag = false;//这个就是为了标识是不是存在这么个节点  也就是第一个判断

        while (temp.next !=null) {
            if (temp.next.no > node.no) {
                break;
            } else if (temp.next.no == node.no) {
                flag = true;
                System.out.println("已经存在了,不能添加");
                break;
            }
            temp = temp.next;

        }
        if(!flag){
            node.next = temp.next;//因为我们要把next的值替换,要么无法插入。所以要找到next的值来比较
            temp.next = node;

        }

    }

    public void show() {

        _Node temp = head.next;
        while (temp!= null) {
            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 "_Node{" +
                "no=" + no +
                ", name='" + name + '\'' +
                ", nickname='" + nickname + '\'' +
                '}';
    }

链表是一个对象, node又是一个对象。 注意:我们因为我们只能用next 来赋值,所以我们需要找到下一个大于 ,当前插入的节点,这样才可以让大的那个放在当前的后边,如果我们找的是本身,就无法把当前插入之前了。

发布了66 篇原创文章 · 获赞 0 · 访问量 781

猜你喜欢

转载自blog.csdn.net/Be_With_I/article/details/104153003