public class SingleLinkDemo {
public static void main(String[] args) {
SingleLink link = new SingleLink();
link.addNode("1");
link.addNode("2");
link.addNode("3");
link.addNode("4");
link.printNode();
link.deleteNode("3");
link.printNode();
}
}
class SingleLink{
class Node{
private Node next;
private String data;
public Node(String data){
this.data = data;
}
public void add(Node newNode){
if(this.next==null){
this.next = newNode;
}else{
this.next.add(newNode);
}
}
public void print(){
System.out.println(this.data);
if(this.next!=null){
this.next.print();
}
}
public boolean search(String data){
if(data.equals(this.data)){
return true;
}else{
if(this.next!=null){
return this.next.search(data);
}else{
return false;
}
}
}
public void delete(Node prev,String data){
if(data.equals(this.data)){
prev.next = this.next;
}else{
if(this.next!=null){
this.next.delete(this, data);
}
}
}
}
private Node root;
public void addNode(String data){
Node newNode = new Node(data);
if(this.root==null){
this.root = newNode;
}else{
this.root.add(newNode);
}
}
public void printNode(){
if(this.root!=null){
this.root.print();
}
}
public boolean contains(String data){
return this.root.search(data);
}
public void deleteNode(String data){
if(this.contains(data)){
if(this.root.data.equals(data)){
this.root = this.root.next;
}else{
this.root.next.delete(root, data);
}
}
}
}