Step-by-step explanation:
public class CircularLinkedListTest
{
private Node head;
private int size;
private class Node
{
private int num;
private Node next;
public Node(int n)
{
num = n;
next = null;
}
public int getNum()
{
return num;
}
public void setNext(Node n)
{
this.next = n;
}
public Node getNext()
{
return next;
}
}
public CircularLinkedListTest ()
{
head = null;
int numNodes = 0;
}
public void add(int num)
{
int numNodes = 0;
if(head == null)
{
head = new Node(num);
head.setNext(head);
numNodes++;
}
else
{
Node temp = head;
while(temp.getNext() != head)
temp = temp.getNext();
temp.setNext(new Node(num));
temp.getNext().setNext(head);
numNodes++;
}
}
public int size()
{
int numNodes = 0;
return numNodes;
}
public int get(int index)
{
Node t = head;
for(int i = 0; i < index; i++)
t= t.getNext();
return t.getNum();
}
public int remove(int index)
{
if(index < 0 || index >= size)
{
System.out.println("Error, index out of Qbounds.");
System.exit(0);
}
Node temp = head;
if(index == 0)
{
while(temp.getNext() != head)
temp = temp.getNext();
int value = head.getNum();
if(size > 1)
{
head = head.getNext();
temp.setNext(head);
}
else
head = null;
size--;
return value;
}
else
{
for(int i = 0; i < index - 1; i++)
temp = temp.getNext();
int answer = temp.getNext().getNum();
temp.setNext(temp.getNext().getNext());
size--;
return answer;
}
}
public static void main(String args[])
{
CircularLinkedListTest suitors = new CircularLinkedListTest ();
for(int i = 1; i <= 6; i++)
suitors.add(i);
int currentIndex = 0;
while(suitors.size() != 1)
{
for(int i = 1; i <= 2; i++)
{
currentIndex++;
if(currentIndex == suitors.size())
currentIndex = 0;
}
suitors.remove(currentIndex);
if(currentIndex == suitors.size())
currentIndex = 0;
for(int i = 0; i < suitors.size(); i++)
System.out.print(suitors.get(i) + " ");
System.out.println();
}
}
}