I want convert the code from singly-linked list to doubly-linked list
I want convert the code from singly-linked list to doubly-linked list
package Problem;
class Node{
private Object value; // Holds the data of the node
private Node next; // Holds the follwoing node's address
Node(Object v, Node n){
this.value =v;
this.next = n;
}
public Node getNext(){
return this.next;
}
public Object getValue(){
return this.value;
}
public void setNext(Node n){
this.next=n;
}
public void setValue(Object v)
{
this.value=v;
}
}
class SLL{
public Node head;
SLL(){
this.head=null;
}
public void display(){
Node curr = this.head;
while(curr != null)
{
System.out.print(curr.getValue());
if(curr.getNext()!=null)
System.out.print("-->");
curr=curr.getNext();
}
System.out.println();
}
public void insertAtFront(Object v){
Node new_node = new Node(v, this.head);
this.head = new_node;
}
public void insertAtEnd(Object v){
Node curr = this.head;
while(curr .getNext()!= null)
curr = curr.getNext();
Node new_node = new Node(v, null);
curr.setNext(new_node);
}
public void insertAfter(Object v, Object key){
Node curr = this.head;
while(curr.getValue() != key)
curr=curr.getNext();
Node new_node = new Node(v, curr.getNext());
curr.setNext(new_node);
}
public void Delete(Object v)
{
if(v == this.head.getValue())
this.head = head.getNext();
else
{
Node curr = this.head;
Node previous = this .head;
while(curr.getValue()!=v)
{
previous = curr;
curr = curr.getNext();
}
previous.setNext(curr.getNext());
}
}
public Node Search(Object v){
Node curr = this.head;
while(curr != null)
{
if(curr.getValue() == v)
return curr;
curr = curr.getNext();
}
return null;
}
//The following function gets the last node in the list
public Node Last(){
Node curr = this.head;
while(curr.getNext()!= null)
curr = curr.getNext();
return curr;
}
// Count the elements of the lsit
public int size(){
Node curr = this.head;
int c=0;
while(curr != null)
{
curr = curr.getNext();
c++;
}
return c;
}
}
public class f {
public static void main(String[] args) {
SLL ls = new SLL();
ls.insertAtFront(1);
ls.insertAtFront(21);
ls.insertAtFront(22);
ls.insertAtFront(3);
ls.display();
//ls.insertAtEnd(33);
//ls.insertAtFront(33);
//ls.insertAfter(33, 22);
//ls.Delete(22);
//Node g = ls.Search(22);
//System.out.println(g.getNext().getValue());
System.out.println(ls.size());
System.out.println(ls.Last().getValue());
//ls.display();
}
}
Step by step
Solved in 2 steps