-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDLinkedList.java
More file actions
104 lines (84 loc) · 2.11 KB
/
Copy pathDLinkedList.java
File metadata and controls
104 lines (84 loc) · 2.11 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
package cse2010.assignment2;
public class DLinkedList<T> {
private Node<T> header;
private Node<T> trailer;
private int size = 0;
public DLinkedList() {
/**/
size = 0;
header = new Node(null , null , null);
trailer = new Node(null , header , null);
header.setNext(trailer);
}
public void setHeaderInfo(T info) {
header.setItem(info);
}
public void setTrailerInfo(T info) {
trailer.setItem(info);
}
public boolean isEmpty() {
return size == 0;
}
public int getSize() { return size; }
public Node<T> getFirst() {
return header.getNext();
}
public Node<T> getLast() {
return trailer.getPrev();
}
public void addFirst(Node<T> n) {
/**/
addAfter(header , n);
}
public void addLast(Node<T> n) {
/**/
addBefore(trailer , n);
}
public T removeFirst(Node<T> n) {
/**/
remove(header.getNext());
return null;
}
public T removeLast() {
/**/
remove(trailer.getPrev());
return null;
}
public void addAfter(Node<T> p, Node<T> n) {
/**/
n.setNext(p.getNext());
n.setPrev(p);
p.getNext().setPrev(n);
p.setNext(n);
size++;
}
public void addBefore(Node<T> p, Node<T> n) {
/**/
n.setNext(p);
n.setPrev(p.getPrev());
p.getPrev().setNext(n);
p.setPrev(n);
size++;
}
public T remove(Node<T> n) {
/**/
n.getPrev().setNext(n.getNext());
n.getNext().setPrev(n.getPrev());
n.setNext(null);
n.setPrev(null);
size--;
return null;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder(
"List: size = " + size + " [");
Node<T> current = header.getNext();
while (current != trailer) {
builder.append(current.getItem().toString());
current = current.getNext();
}
builder.append("]");
return builder.toString();
}
}