package
com.java2novice.ds.linkedlist;
public
class
SinglyLinkedListImpl<T> {
private
Node<T> head;
public
void
add(T element){
Node<T> nd =
new
Node<T>();
nd.setValue(element);
System.out.println(
"Adding: "
+element);
Node<T> tmp = head;
while
(
true
){
if
(tmp ==
null
){
head = nd;
break
;
}
else
if
(tmp.getNextRef() ==
null
){
tmp.setNextRef(nd);
break
;
}
else
{
tmp = tmp.getNextRef();
}
}
}
public
void
traverse(){
Node<T> tmp = head;
while
(
true
){
if
(tmp ==
null
){
break
;
}
System.out.print(tmp.getValue()+
"\t"
);
tmp = tmp.getNextRef();
}
}
public
void
reverse(){
System.out.println(
"\nreversing the linked list\n"
);
Node<T> prev =
null
;
Node<T> current = head;
Node<T> next =
null
;
while
(current !=
null
){
next = current.getNextRef();
current.setNextRef(prev);
prev = current;
current = next;
}
head = prev;
}
public
static
void
main(String a[]){
SinglyLinkedListImpl<Integer> sl =
new
SinglyLinkedListImpl<Integer>();
sl.add(
3
);
sl.add(
32
);
sl.add(
54
);
sl.add(
89
);
System.out.println();
sl.traverse();
System.out.println();
sl.reverse();
sl.traverse();
}
}
class
Node<T>
implements
Comparable<T> {
private
T value;
private
Node<T> nextRef;
public
T getValue() {
return
value;
}
public
void
setValue(T value) {
this
.value = value;
}
public
Node<T> getNextRef() {
return
nextRef;
}
public
void
setNextRef(Node<T> ref) {
this
.nextRef = ref;
}
@Override
public
int
compareTo(T arg) {
if
(arg ==
this
.value){
return
0
;
}
else
{
return
1
;
}
}
}
No comments:
Post a Comment