Singly linked list implementation
package com.java2novice.ds.linkedlist;
public class SinglyLinkedListImpl
{
private Node
head;
private Node
tail;
public void add(T
element)
{
Node
nd = new Node();
nd.setValue(element);
System.out.println("Adding:
"+element);
if(head
== null)
{
head
= nd;
tail
= nd;
}
else
{
tail.setNextRef(nd);
tail
= nd;
}
}
public void
addAfter(T element, T after)
{
Node
tmp = head;
Node
refNode = null;
System.out.println("Traversing
to all nodes..");
while(true)
{
if(tmp
== null)
{
break;
}
if(tmp.compareTo(after)
== 0)
{
refNode
= tmp;
break;
}
tmp
= tmp.getNextRef();
}
if(refNode
!= null)
{
Node
nd = new Node();
nd.setValue(element);
nd.setNextRef(tmp.getNextRef());
if(tmp
== tail)
{
tail
= nd;
}
tmp.setNextRef(nd);
}
else
{
System.out.println("Unable
to find the given element...");
}
}
public void
deleteFront()
{
if(head
== null)
{
System.out.println("Underflow...");
}
Node
tmp = head;
head
= tmp.getNextRef();
if(head
== null)
{
tail
= null;
}
System.out.println("Deleted:
"+tmp.getValue());
}
public void
deleteAfter(T after)
{
Node
tmp = head;
Node
refNode = null;
System.out.println("Traversing
to all nodes..");
while(true)
{
if(tmp
== null)
{
break;
}
if(tmp.compareTo(after)
== 0)
{
refNode
= tmp;
break;
}
tmp
= tmp.getNextRef();
}
if(refNode
!= null)
{
tmp
= refNode.getNextRef();
refNode.setNextRef(tmp.getNextRef());
if(refNode.getNextRef()
== null)
{
tail
= refNode;
}
System.out.println("Deleted:
"+tmp.getValue());
}
else
{
System.out.println("Unable
to find the given element...");
}
}
public void traverse()
{
Node
tmp = head;
while(true)
{
if(tmp
== null)
{
break;
}
System.out.println(tmp.getValue());
tmp
= tmp.getNextRef();
}
}
public static
void main(String a[])
{
SinglyLinkedListImpl
sl = new SinglyLinkedListImpl();
sl.add(3);
sl.add(32);
sl.add(54);
sl.add(89);
sl.addAfter(76,
54);
sl.deleteFront();
sl.deleteAfter(76);
sl.traverse();
}
}
class Node implements
Comparable
{
private T value;
private Node
nextRef;
public T getValue()
{
return
value;
}
public void setValue(T
value)
{
this.value
= value;
}
public Node
getNextRef()
{
return
nextRef;
}
public void
setNextRef(Node ref)
{
this.nextRef
= ref;
}
public int compareTo(T
arg)
{
if(arg
== this.value)
{
return
0;
}
else
{
return
1;
}
}
}
No comments:
Post a Comment