Question: public class FinalExamTest { // DO NOT CHANGE THE MAIN METHOD public static void main(String[] args) { MyLinkedList list1 = new MyLinkedList (); MyLinkedList list2
public class FinalExamTest {
// DO NOT CHANGE THE MAIN METHOD
public static void main(String[] args) {
MyLinkedList
MyLinkedList
list1.addFirst(new Integer(4));
list1.addFirst(new Integer(3));
list1.addFirst(new Integer(7));
list1.addFirst(new Integer(5));
list1.addFirst(new Integer(9));
list2.addFirst(new Integer(3));
list2.addFirst(new Integer(2));
list2.addFirst(new Integer(1));
list2.addFirst(new Integer(5));
list2.addFirst(new Integer(0));
list2.addFirst(new Integer(7));
System.out.println("List 1: " + list1);
System.out.println("List 2: " + list2);
System.out.println("Intersection of list1 and list2:" + setIntersection(list1, list2));
System.out.println("Difference of list1 and list2:" + setDifference(list1, list2));
}
/* Returns a new list that contains the intersection of list1 and list2
* Set intersection is the elements of list1 that also belong to list2
* list1 = [4,3,7,5,9] list2 = [3,2,1,5,0,7] list3 = [3,5,7]<--- the intersection
* DO NOT CHANGE THE METHOD HEADER
* Write your name
*/
public static MyLinkedList
MyLinkedList
//WRITE YOUR CODE HERE: You get an error here since the code is incomplete
}
/* Returns a new list that contains the difference of list1 and list2
* Set difference is the set of elements in list1 but not in list2
* list1 = [4,3,7,5,9] list2 = [3,2,1,5,0,7] list3 = [4,9]<--- the difference
* DO NOT CHANGE THE METHOD HEADER
* Write your name
*/
public static MyLinkedList
MyLinkedList
//WRITE YOUR CODE HERE:You get an error here since the code is incomplete
}
}
/* DO NOT CHANGE MyLinkedList class*/
final class MyLinkedList
private Node
private int size;
/**
* Create a default list
*/
public MyLinkedList() {
head = null;
size = 0;
}
/**
* returns the list size
*/
public int getSize() {
return size;
}
/**
* returns the element at given index, returns null if index out of bounds.
* 0-based indexing *
*/
public E get(int index) {
if (index < 0 || index >= size) {
return null;
} else {
Node
for (int i = 0; i < index; i++) {
temp = temp.next;
}
return temp.element;
}
}
/**
* Return the head element in the list
*/
public E getFirst() {
if (size == 0) {
return null;
} else {
return head.element;
}
}
/**
* Return the last element in the list
*/
public E getLast() {
if (size == 0) {
return null;
} else {
return tail.element;
}
}
/**
* Add an element to the beginning of the list
*/
public void addFirst(E e) {
Node
newNode.next = head; // link the new node with the head
head = newNode; // head points to the new node
size++; // Increase list size
if (tail == null) // the new node is the only node in list
{
tail = head;
}
}
/**
* Add an element to the end of the list
*/
public void addLast(E e) {
Node
if (tail == null) {
head = tail = newNode; // The new node is the only node in list
} else {
tail.next = newNode; // Link the new with the last node
tail = tail.next; // tail now points to the last node
}
size++; // Increase size
}
/**
* Add a new element at the specified index in this list The index of the
* head element is 0
*/
public void add(int index, E e) {
if (index == 0) {
addFirst(e);
} else if (index >= size) {
addLast(e);
} else {
Node
for (int i = 1; i < index; i++) {
current = current.next;
}
Node
current.next = new Node
(current.next).next = temp;
size++;
}
}
/**
* Remove the head node and return the object that is contained in the
* removed node.
*/
public E removeFirst() {
if (size == 0) {
return null;
} else {
Node
head = head.next;
size--;
if (head == null) {
tail = null;
}
return temp.element;
}
}
/**
* Remove the last node and return the object that is contained in the
* removed node.
*/
public E removeLast() {
if (size == 0) {
return null;
} else if (size == 1) {
Node
head = tail = null;
size = 0;
return temp.element;
} else {
Node
for (int i = 0; i < size - 2; i++) {
current = current.next;
}
Node
tail = current;
tail.next = null;
size--;
return temp.element;
}
}
/**
* Remove the element at the specified position in this list. Return the
* element that was removed from the list.
*/
public E remove(int index) {
if (index < 0 || index >= size) {
return null;
} else if (index == 0) {
return removeFirst();
} else if (index == size - 1) {
return removeLast();
} else {
Node
for (int i = 1; i < index; i++) {
previous = previous.next;
}
Node
previous.next = current.next;
size--;
return current.element;
}
}
/**
* Override toString() to return elements in the list
*/
public String toString() {
StringBuilder result = new StringBuilder("[");
Node
for (int i = 0; i < size; i++) {
result.append(current.element);
current = current.next;
if (current != null) {
result.append(", "); // Separate two elements with a comma
}
}
result.append("]");
return result.toString();
}
/**
* Clear the list
*/
public void clear() {
head = tail = null;
}
/**
* return true if the list is empty *
*/
public boolean isEmpty() {
return size == 0;
}
private static class Node
E element;
Node
public Node(E element) {
this.element = element;
}
}
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
