import java.util.*;
class ListNode
{
int
item;
ListNode
next;
ListNode(int
item)
{
this.next=null;
this.item=item;
}
public
static ListNode insertEnd(int item, ListNode start)
{
ListNode
l=new ListNode(item);
if(start
== null)
{
start=l;
return
l;
}
while(start.next!=null)
{
start=start.next;
}
start.next=l;
return
l;
}
static
void print(ListNode start)
{
while(start!=null)
{
System.out.println(start.item);
start=start.next;
}
}
static
int nth(int num, ListNode start)
{
int
count=0;
while(start!=null)
{
count++;
if(num==count)
{
return
start.item;
}
start=start.next;
}
return
-1;
}
static
ListNode deleteEnd(ListNode start)
{
ListNode
cstart;
cstart=start;
if(start==null)
{
System.out.println("List
empty!!! Deletion not possible");
return
start;
}
if(start.next==null)
{
start=null;
System.out.println("Deletion
Successful");
return
start;
}
while(start.next.next!=null)
{
start=start.next;
}
start.next=null;
System.out.println("Deletion
Successful");
return
cstart;
}
static
ListNode insertAfter(int item1 ,int item2,ListNode start)
{
ListNode
cstart;
cstart=start;
while(start!=null)
{
if(start.item==item1)
break;
start=start.next;
}
if(start==null)
{
System.out.println("Item
not found");
return
cstart;
}
ListNode
l2=new ListNode(item2);
l2.next=start.next;
start.next=l2;
return
cstart;
}
static
ListNode insertBefore(int item1,int item2,ListNode start)
{
ListNode
cstart;
cstart=start;
if(start==null)
{
System.out.println("List
empty");
return
start;
}
if(start.item==item1)
{
ListNode
l2=new ListNode(item2);
l2.next=start;
return
l2;
}
while(start!=null)
{
if(start.next.item==item1)
break;
start=start.next;
}
if(start==null)
{
System.out.println("Item
not Found");
return
cstart;
}
start=insertAfter(start.item,item2,start);
return
cstart;
}
static
ListNode deleteNode(int item1 ,ListNode start)
{
ListNode
cstart;
cstart=start;
if(start==null)
{
System.out.println("List
is empty");
return
start;
}
if(start.next==null
&& start.item==item1)
{
return
null;
}
else
if(start.next==null && start.item!=item1)
{
System.out.println("Item
not found");
return
cstart;
}
while(start.next!=null)
{
if(start.next.item==item1)
break;
start=start.next;
}
if(start.next==null
&& start.item!=item1)
{
System.out.println("Item
not found");
return
cstart;
}
else
if(start.next==null && start.item==item1)
{
deleteEnd(cstart);
}
start.next=start.next.next;
return
cstart;
}
static
ListNode reverse(ListNode start)
{
if(start==null)
return
start;
ListNode
ptr,prev,temp;
prev=null;
ptr=start;
temp=start.next;
while(ptr!=null)
{
ptr.next=prev;
prev=ptr;
ptr=temp;
if(ptr!=null)
temp=temp.next;
}
return
prev;
}
}
class Main
{
public
static void main(String args[])
{
ListNode
start;
int
choice,item;
Scanner
sc=new Scanner(System.in);
start=null;
while(true)
{
System.out.println("-------Menu--------");
System.out.println("1.\tInsert
a new node at the end");
System.out.println("2.\tPrint
the list");
System.out.println("3.\tPrint
the nth item");
System.out.println("4.\tDelete
the last node");
System.out.println("5.\tInsert
after a given node");
System.out.println("6.\tInsert
before a given node");
System.out.println("7.\tDelete
a given node");
System.out.println("8.\tDelete
nth node");
System.out.println("9.\tReverse
the list");
System.out.println("10.\tExit");
System.out.println("Enter
your choice");
choice=sc.nextInt();
switch(choice)
{
case
1:
System.out.println("Enter
the item you want to insert");
item=sc.nextInt();
if(start==null)
{
start=ListNode.insertEnd(item,start);
}
else
ListNode.insertEnd(item,start);
break;
case
2:
ListNode.print(start);
break;
case
3:
System.out.println("Enter
the item number you want to print");
int
num=sc.nextInt();
System.out.println(ListNode.nth(num,start));
break;
case
4:
start=ListNode.deleteEnd(start);
break;
case
5:
System.out.println("Enter
the node item after which you want to
insert");
int
item1=sc.nextInt();
System.out.println("Enter
the node item which you want to
insert");
int
item2=sc.nextInt();
start=ListNode.insertAfter(item1,item2,start);
break;
case
6:
System.out.println("Enter
the node item before which you want to
insert");
item1=sc.nextInt();
System.out.println("Enter
the node item which you want to
insert");
item2=sc.nextInt();
start=ListNode.insertBefore(item1,item2,start);
break;
case
7:
System.out.println("Enter
the node you want to delete");
item1=sc.nextInt();
start=ListNode.deleteNode(item1,start);
break;
case
8:
System.out.println("Enter
the node number you want to delete");
int
n=sc.nextInt();
start=ListNode.deleteNode(ListNode.nth(n,start),start);
break;
case
9:
start=ListNode.reverse(start);
break;
case
10:
System.exit(1);
break;
default:
System.out.println("Wrong
choice");
}
}
}
}
No comments:
Post a Comment