/*


File name    		:		LL.java
Date			:		27 March 2013
Author			:		Shivam Tiwari
Organization		:		http://m...content-available-to-author-only...t.in/
Description		:		Implementing Dynamic Linked List in java by importing java.util.LinkedList


*/

import java.util.LinkedList;
import java.util.Scanner;

//defining a custom data-type (class)
class LLObj{
	int NodeInt;
	char NodeChar;
	LLObj(int x, char y){
		NodeInt = x;
		NodeChar = y;
		}
	}

//main class	
public class Main{

	static int ChosenOption, TempInt, NodeCounter, TempCounter;
	static char TempChar;
		
	//creating scanner object
	static Scanner ScannerObj = new Scanner(System.in);
		
	//creating a link list
	static LinkedList<LLObj> list = new LinkedList<>();
	
	//main function
	public static void main(String[] args){
		
		NodeCounter = 0;
		
		//driving menu
		for(;;){
		System.out.println("Enter 1 to add a node to linked list");
		System.out.println("Enter 2 to print the current list");
		System.out.println("Enter 3 to quit the program");
		ChosenOption = ScannerObj.nextInt();
		if(ChosenOption == 1){
			AddNew();
			}
		else if(ChosenOption == 2){
			PrintList();
			}
		else if(ChosenOption == 3){
			return;
			}
		else{
			System.out.println("Wrong Input. Try again!");
			}
		}
	}
		
	//AddNew function
	public static void AddNew(){
		
		//getting input
		System.out.println("Enter integer");
		TempInt = ScannerObj.nextInt();
		System.out.println("Enter character");
		TempChar = ScannerObj.next().charAt(0);
		
		//adding node to the list
		list.addLast(new LLObj(TempInt,TempChar));
		
		//Increment Node Counter
		NodeCounter++;
		}
	
	public static void PrintList(){
		TempCounter = 0;
		while(TempCounter < NodeCounter){
			System.out.println(list.get(TempCounter).NodeInt);
			System.out.println(list.get(TempCounter).NodeChar);
			System.out.println("");
			TempCounter++;
			}
		}		
	}
	
	
	