Create a LinkedList as follows: The list should contain 10 nodes, each represent
ID: 3594562 • Letter: C
Question
Create a LinkedList as follows:
The list should contain 10 nodes, each representing an integer. Allow the user to input exactly 10 integers.
Write a method that prints every other element in the linked list.
Write a method that removes all nodes containing odd integers from the list.
Example execution:Enter integer 1: 3
Enter integer 2: 4
Enter integer 3: 5
Enter integer 4: 6
Enter integer 5: 7
Enter integer 6: 8
Enter integer 7: 9
Enter integer 8: 1
Enter integer 9: 2
Enter integer 10: 3
The linked list of numbers: [3, 4, 5, 6, 7, 8, 9, 1, 2, 3]
Displaying every other node : 3 5 7 9 2
After deleting odd numbers, the linked list of numbers: [4, 6, 8, 2]
Explanation / Answer
Please find my implementaion.
import java.util.Scanner;
public class LinkedList
{
Node head; // head of list
/* Linked list Node*/
class Node
{
int data;
Node next;
Node(int d) {data = d; next = null; }
}
/* Appends a new node at the end. This method is
defined inside LinkedList class shown above */
public void append(int new_data)
{
/* 1. Allocate the Node &
2. Put in the data
3. Set next as null */
Node new_node = new Node(new_data);
/* 4. If the Linked List is empty, then make the
new node as head */
if (head == null)
{
head = new Node(new_data);
return;
}
/* 4. This new node is going to be the last node, so
make next of it as null */
new_node.next = null;
/* 5. Else traverse till the last node */
Node last = head;
while (last.next != null)
last = last.next;
/* 6. Change the next of last node */
last.next = new_node;
return;
}
/* This function prints contents of linked list starting from
the head node */
public void printList()
{
Node tnode = head;
System.out.print("[");
while (tnode != null)
{
System.out.print(tnode.data+" ");
tnode = tnode.next;
}
System.out.println("]");
}
/* This function prints other elements of linked list starting from
the head node */
public void printOtherList()
{
Node tnode = head;
while (tnode != null)
{
System.out.print(tnode.data+" ");
tnode = tnode.next;
if(tnode != null)
tnode = tnode.next;
}
System.out.println();
}
public void deleteOdds() {
if(head == null)
return;
while(head != null && head.data%2 == 1)
head = head.next;
if(head == null)
return;
Node temp = head;
while(temp.next != null) {
if(temp.next.data %2 == 1)
temp.next = temp.next.next;
else
temp = temp.next;
}
}
/* Driver program to test above functions. Ideally this function
should be in a separate user class. It is kept here to keep
code compact */
public static void main(String[] args)
{
/* Start with the empty list */
LinkedList llist = new LinkedList();
Scanner sc = new Scanner(System.in);
int i = 1, x;
while(i <= 10) {
System.out.print("Enter integer "+i+":");
x = sc.nextInt();
llist.append(x);
i++;
}
sc.close();
System.out.print("The linked list of numbers: ");
llist.printList();
System.out.print("Displaying every other node : ");
llist.printOtherList();
llist.deleteOdds();
System.out.print("After deleting odd numbers, the linked list of numbers: ");
llist.printList();
}
}
/*
Sample run:
Enter integer 1:1
Enter integer 2:2
Enter integer 3:3
Enter integer 4:4
Enter integer 5:5
Enter integer 6:6
Enter integer 7:7
Enter integer 8:8
Enter integer 9:9
Enter integer 10:1
The linked list of numbers: [1 2 3 4 5 6 7 8 9 1 ]
Displaying every other node : 1 3 5 7 9
After deleting odd numbers, the linked list of numbers: [2 4 6 8 ]
*/