import java.util.Scanner;
public class LinkedList
{
public static void main(String []args)
{
Scanner keyboard = new Scanner(System.in);
ListNode head = new ListNode();
head.link = null;
ListNode tail = head;
System.out.print("Enter integers, seperated with blanks, to put into a linked list (type zero (0) to end): ");
int in;
in = keyboard.nextInt();
while (in != 0)
{
ListNode x = new ListNode();
x.link = null;
x.data = in;
tail.link = x;
tail = x;
in = keyboard.nextInt();
}
printLinked(head.link);
delrep(head.link);
printLinked(head.link);
invert(head);
printLinked(head.link);
}
/** The printLinked() method prints out, in order, the integers stored in the linked list.
*/
public static void printLinked(ListNode head)
{
while (head != null)
{
System.out.print(head.data + " ");
head = head.link;
}
System.out.println();
}
public static void delrep(ListNode head)
{
ListNode seek = head.link;
ListNode ref = head;
ListNode c = ref;
while (seek != null)
{
if (seek.data == ref.data)
{
seek = seek.link;
c.link = c.link.link;
}
else
{
seek = seek.link;
c = c.link;
}
}
}
public static void invert (ListNode head)
{
ListNode lead = head.link.link;
ListNode trail = head.link;
ListNode secondtrail = head;
head.link = null;
trail.link = null;
while (lead.link != null)
{
secondtrail = trail;
trail = lead;
lead = lead.link;
trail.link = secondtrail;
}
head.link = lead;
}
}