2024-12-10 日报 Day12

2024-12-10 日报 Day12

Yuyang 前端小白🥬

今日的鸡汤

山不让尘,
川不辞盈。

今日学习内容

最近已经要求开始写大论文了,所以学习的时间会减少,但是我会尽量保持每天的学习时间,不会放弃的。
1、《JavaScript数据结构与算法》 P93-105

今日笔记

1、链表简单实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
function LinkedList(){
let Node = function(element){
this.element = element;
this.next = null;
};

let length = 0;
let head = null;

this.append = function(element){
let node = new Node(element),
current;

if(head === null){
head = node;
} else {
current = head;

while(current.next){
current = current.next;
}

current.next = node;
}

length++;
};
this.insert = function(position, element){
if(positio >= 0 && position <= length){
let node = new Node(element),
current = head,
previous,
index = 0;
if(position === 0){
node.next = current;
head = node;
}else{
while(index++ < position){
previous = current;
current = current.next;
}
node.next = current;
previous.next = node;
}
length++;
return true;
}else{
return false;
}
};
this.removeAt = function(position){
if(position > -1 && position < length){
let current = head,
previous,
index = 0;

if(position === 0){
head = current.next;
} else {
while(index++ < position){
previous = current;
current = current.next;
}

previous.next = current.next;
}

length--;

return current.element;
} else {
return null;
}
};
this.remove = function(element){
let index = this.indexOf(element);
return this.removeAt(index);
};
this.indexOf = function(element){
let current = head,
index = -1;
while(current){
if(element === current.element){
return index;
}
index++;
current = current.next;
}
return -1'
};
this.isEmpty = function(){
return length === 0;
};
this.size = function(){
return length;
};
this.getHead = function(){
return head;
};
this.toString = function(){
let current = head;
string = '';
while(current){
string += current.element + (current.next ? 'n': '');
current = current.next;
}
return string;
};
this.print = function(){};
}

2、双向链表: 双向链表和普通链表的区别在于,双向链表的节点有两个指针,一个指向前一个节点,一个指向后一个节点。

1
2
3
4
5
6
7
8
9
10
11
12
13
function DoublyLinkedList(){
let Node = function(element){
this.element = element;
this.next = null;
this.prev = null;
}

let length = 0;
let head = null;
let tail = null;

// 这里是方法
}

3、循环链表: 循环链表和链表的区别在于,链表的最后一个节点指向null,而循环链表的最后一个节点指向第一个节点。
4、双向循环链表有指向head元素的tail.next,和指向tail元素的head.prev。

此页目录
2024-12-10 日报 Day12