blob: 977f42b23a67766c008c3d52106b5db92aec5c8b (
plain) (
blame)
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
|
/* __ *\
** ________ ___ / / ___ Scala API **
** / __/ __// _ | / / / _ | (c) 2003, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
** $Id$
\* */
package scala.collection.mutable;
/** This extensible class may be used as a basis for implementing double
* linked lists. Type variable <code>A</code> refers to the element type
* of the list, type variable <code>This</code> is used to model self
* types of linked lists.
*
* @author Matthias Zenger
* @version 1.0, 08/07/2003
*/
[serializable]
abstract class DoubleLinkedList[A, This <: DoubleLinkedList[A, This]]: This
extends SingleLinkedList[A, This] {
var prev: This = _;
override def append(that: This): Unit =
if (that == null)
()
else if (next == null) {
next = that;
that.prev = this;
} else
next.append(that);
override def insert(that: This): Unit = if (that != null) {
that.append(next);
next = that;
that.prev = this;
}
def remove: Unit = {
if (next != null)
next.prev = prev;
if (prev != null)
prev.next = next;
prev = null;
next = null;
}
}
|