forked from behappyyoung/javascriptsamplecodes
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDouble_linked_list.html
More file actions
109 lines (87 loc) · 2.4 KB
/
Copy pathDouble_linked_list.html
File metadata and controls
109 lines (87 loc) · 2.4 KB
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
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="Double Linked List" />
<meta charset=utf-8 />
<title>Double Linked List</title>
<link type="text/css" rel="stylesheet" media="all" href="../common.css"/>
</head>
<body>
<div class="script">
function DoublyLinkedList() {
this._length = 0;
this._head = null;
this._tail = null;
this.add= function (data){
//create a new item object, place data in
var node = {
data: data,
next: null,
prev: null
};
//special case: no items in the list yet
if (this._length === 0) {
this._head = node;
this._tail = node;
} else {
//attach to the tail node
this._tail.next = node;
node.prev = this._tail;
this._tail = node;
}
//don't forget to update the count
this._length++;
};
this.remove= function(index){
//check for out-of-bounds values
if (index > -1 && index < this._length){
var current = this._head,
i = 0;
//special case: removing first item
if (index === 0){
this._head = current.next;
if (!this._head){
this._tail = null;
} else {
this._head.prev = null;
}
//special case: removing last item
} else if (index === this._length -1){
current = this._tail;
this._tail = current.prev;
this._tail.next = null;
} else {
//find the right location
while(i++ < index){
current = current.next;
}
//skip over the item to remove
current.prev.next = current.next;
}
//decrement the length
this._length--;
//return the value
return current.data;
} else {
return null;
}
};
this.showList =function(){
var showText = ' => ';
var current = this._head;
while(current!=null){
showText += ' <- ' + current.data + ' -> ' ;
current = current.next;
}
return showText+ "<== ";
}
}
var mydlink = new DoublyLinkedList();
</div>
<div id="display">
</div>
<script src="Double_linked_list.js"> </script>
<script src="../showHtml.js"></script>
<script src="../showJs.js"></script>
</body>
</html>