js链表的定义以及一些简单的功能,类似于增删改查

js的链表的定义
 class Node {  //首先通过这个类来定义我们的节点,再通过简历list的类将我们的若干个节点来进行串联
            constructor(arrive, ser) {
                this.arrive = arrive;
                this.ser = ser;
                this.begin = " ";
                this.finish = " ";
                this.turnover = " ";
                this.w = " ";
                this.next = null;
                this.size = 0;
            }
            show() {
                console.log("当前节点的arrive为 " + this.arrive + " ser为" + this.ser);
            }
        }
        class List {//该类为定义的list类, 通过定义的一些函数来进行这个类的操作
            constructor() {
                this.size = 0;
                this.head = new Node();
                this.next = "";
            }
            display() {//显示链表操作
                let result = "\n";
                let p = this.head;

                while (p != null) {
                    result = result + "到达时间 " + p.arrive + "服务时间 " + p.ser + "开始时间 " + p.begin + "结束时间 " + p.finish + "周转时间 " + p.turnover + "带权时间 " + p.w + "\n";
                    p = p.next;
                    if (p != null) {

                        result = result + "->";
                    }
                }
                console.log(result);
            }
            findlast() {//寻找最后一个节点操作
                let p = this.head;
                while (p.next) {
                    p = p.next;
                }
                return p;
            }
            delnode(arrive,ser){//删除节点操作
                let p=this.head;
                let pr=this.head;
                while(p.next!=null&&p.ser!=ser&&p.arrive!=arrive){
                    pr=p;
                    p=p.next;
                   
                }
                 console.log(p);
                    console.log(pr);
                    console.log("ser arrive "+ser +" "+arrive);
                if(p.ser==ser&&p.arrive==arrive){
                    if(p==this.head){
                      this.head=this.head.next;
                       console.log("待删节点石头节点");
                    }
                    else{
                        console.log("待删节点不是头接点");
                        pr.next=p.next;
                    }
                }
                console.log("skajflsdajflksadflksajdklfjaksldflsadjflkadlksadjfl");
                //this.display();
            }
            addnode(arrive, ser) {//添加节点操作
                let num = 0;
                let newNode = new Node(arrive, ser);
                let p = this.head;

                if (p.arrive == undefined) {
                    console.log("头节点为空");
                    p.arrive = arrive;
                    p.ser = ser;

                }
                else {
                    let p = this.findlast();

                    p.next = newNode;
                    p.size = p.size + 1;
                    console.log(p.size);
                    newNode.show();

                }
                p.size++;
            }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值