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++;
}