SlideShare a Scribd company logo
Hi,
I have added the methods and main class as per your requirement. it is working fine now.
Highlighted the code changes.
MyLinkedListTest.java
public class MyLinkedListTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyLinkedList list = new MyLinkedList();
list.addFirst("AAAAA");
list.add("1");
list.add("2");
list.add("3");
list.addLast("ZZZZZ");
System.out.println("Linked List Elements : "+list.toString());
System.out.println("First element: "+list.getFirst());
System.out.println("Second element: "+list.getLast());
System.out.println("Removed First Element: "+list.removeFirst());
System.out.println("Now Linked List Elements : "+list.toString());
System.out.println("Removed Last Element: "+list.removeLast());
System.out.println("Now Linked List Elements : "+list.toString());
System.out.println("Removed all element: ");
list.removeAll();
System.out.println("Now Linked List Elements : "+list.toString());
}
}
MyLinkedList.java
public class MyLinkedList extends MyAbstractList {
private Node head, tail;
/** Create a default list */
public MyLinkedList() {
}
/** Create a list from an array of objects */
public MyLinkedList(E[] objects) {
super(objects);
}
/** Return the head element in the list */
public E getFirst() {
if (size == 0) {
return null;
}
else {
return (E)head.element;
}
}
/** Return the last element in the list */
public E getLast() {
if (size == 0) {
return null;
}
else {
return (E)tail.element;
}
}
/** Add an element to the beginning of the list */
public void addFirst(E e) {
Node newNode = new Node(e); // Create a new 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 newNode = new Node(e); // Create a new for element e
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 current = head;
for (int i = 1; i < index; i++) {
current = current.next;
}
Node temp = current.next;
current.next = new Node(e);
(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 temp = head;
head = head.next;
size--;
if (head == null) {
tail = null;
}
return (E)temp.element;
}
}
/** Remove all elements from list */
public void removeAll() {
while(true) {
if (size == 0) {
break;
}
else {
Node temp = head;
head = head.next;
size--;
if (head == null) {
tail = null;
}
}
}
}
/** 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 temp = head;
head = tail = null;
size = 0;
return (E)temp.element;
}
else {
Node current = head;
for (int i = 0; i < size - 2; i++) {
current = current.next;
}
Node temp = tail;
tail = current;
tail.next = null;
size--;
return (E)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 previous = head;
for (int i = 1; i < index; i++) {
previous = previous.next;
}
Node current = previous.next;
previous.next = current.next;
size--;
return (E)current.element;
}
}
/** Override toString() to return elements in the list */
public String toString() {
StringBuilder result = new StringBuilder("[");
Node current = head;
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("]"); // Insert the closing ] in the string
return result.toString();
}
/** Clear the list */
public void clear() {
head = tail = null;
}
/** Return true if this list contains the element o */
public boolean contains(E e) {
System.out.println("Implementation left as an exercise");
return true;
}
/** Return the element from this list at the specified index */
public E get(int index) {
System.out.println("Implementation left as an exercise");
return null;
}
/** Return the index of the head matching element in this list.
* Return -1 if no match. */
public int indexOf(E e) {
System.out.println("Implementation left as an exercise");
return 0;
}
/** Return the index of the last matching element in this list
* Return -1 if no match. */
public int lastIndexOf(E e) {
System.out.println("Implementation left as an exercise");
return 0;
}
/** Replace the element at the specified position in this list
* with the specified element. */
public E set(int index, E e) {
System.out.println("Implementation left as an exercise");
return null;
}
private static class Node {
E element;
Node next;
public Node(E element) {
this.element = element;
}
}
}
MyAbstractList.java
public abstract class MyAbstractList implements MyList {
protected int size = 0; // The size of the list
/** Create a default list */
protected MyAbstractList() {
}
/** Create a list from an array of objects */
protected MyAbstractList(E[] objects) {
for (int i = 0; i < objects.length; i++)
add(objects[i]);
}
/** Add a new element at the end of this list */
public void add(E e) {
add(size, e);
}
/** Return true if this list contains no elements */
public boolean isEmpty() {
return size == 0;
}
/** Return the number of elements in this list */
public int size() {
return size;
}
/** Remove the first occurrence of the element o from this list.
* Shift any subsequent elements to the left.
* Return true if the element is removed. */
public boolean remove(E e) {
if (indexOf(e) >= 0) {
remove(indexOf(e));
return true;
}
else
return false;
}
}
MyList.java
public interface MyList {
/** Add a new element at the end of this list */
public void add(E e);
/** Add a new element at the specified index in this list */
public void add(int index, E e);
/** Clear the list */
public void clear();
/** Return true if this list contains the element */
public boolean contains(E e);
/** Return the element from this list at the specified index */
public E get(int index);
/** Return the index of the first matching element in this list.
* Return -1 if no match. */
public int indexOf(E e);
/** Return true if this list contains no elements */
public boolean isEmpty();
/** Return the index of the last matching element in this list
* Return -1 if no match. */
public int lastIndexOf(E e);
/** Remove the first occurrence of the element o from this list.
* Shift any subsequent elements to the left.
* Return true if the element is removed. */
public boolean remove(E e);
/** Remove the element at the specified position in this list
* Shift any subsequent elements to the left.
* Return the element that was removed from the list. */
public E remove(int index);
/** Replace the element at the specified position in this list
* with the specified element and returns the new set. */
public Object set(int index, E e);
/** Return the number of elements in this list */
public int size();
}
Output:
Linked List Elements : [AAAAA, 1, 2, 3, ZZZZZ]
First element: AAAAA
Second element: ZZZZZ
Removed First Element: AAAAA
Now Linked List Elements : [1, 2, 3, ZZZZZ]
Removed Last Element: ZZZZZ
Now Linked List Elements : [1, 2, 3]
Removed all element:
Now Linked List Elements : []
Solution
Hi,
I have added the methods and main class as per your requirement. it is working fine now.
Highlighted the code changes.
MyLinkedListTest.java
public class MyLinkedListTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyLinkedList list = new MyLinkedList();
list.addFirst("AAAAA");
list.add("1");
list.add("2");
list.add("3");
list.addLast("ZZZZZ");
System.out.println("Linked List Elements : "+list.toString());
System.out.println("First element: "+list.getFirst());
System.out.println("Second element: "+list.getLast());
System.out.println("Removed First Element: "+list.removeFirst());
System.out.println("Now Linked List Elements : "+list.toString());
System.out.println("Removed Last Element: "+list.removeLast());
System.out.println("Now Linked List Elements : "+list.toString());
System.out.println("Removed all element: ");
list.removeAll();
System.out.println("Now Linked List Elements : "+list.toString());
}
}
MyLinkedList.java
public class MyLinkedList extends MyAbstractList {
private Node head, tail;
/** Create a default list */
public MyLinkedList() {
}
/** Create a list from an array of objects */
public MyLinkedList(E[] objects) {
super(objects);
}
/** Return the head element in the list */
public E getFirst() {
if (size == 0) {
return null;
}
else {
return (E)head.element;
}
}
/** Return the last element in the list */
public E getLast() {
if (size == 0) {
return null;
}
else {
return (E)tail.element;
}
}
/** Add an element to the beginning of the list */
public void addFirst(E e) {
Node newNode = new Node(e); // Create a new 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 newNode = new Node(e); // Create a new for element e
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 current = head;
for (int i = 1; i < index; i++) {
current = current.next;
}
Node temp = current.next;
current.next = new Node(e);
(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 temp = head;
head = head.next;
size--;
if (head == null) {
tail = null;
}
return (E)temp.element;
}
}
/** Remove all elements from list */
public void removeAll() {
while(true) {
if (size == 0) {
break;
}
else {
Node temp = head;
head = head.next;
size--;
if (head == null) {
tail = null;
}
}
}
}
/** 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 temp = head;
head = tail = null;
size = 0;
return (E)temp.element;
}
else {
Node current = head;
for (int i = 0; i < size - 2; i++) {
current = current.next;
}
Node temp = tail;
tail = current;
tail.next = null;
size--;
return (E)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 previous = head;
for (int i = 1; i < index; i++) {
previous = previous.next;
}
Node current = previous.next;
previous.next = current.next;
size--;
return (E)current.element;
}
}
/** Override toString() to return elements in the list */
public String toString() {
StringBuilder result = new StringBuilder("[");
Node current = head;
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("]"); // Insert the closing ] in the string
return result.toString();
}
/** Clear the list */
public void clear() {
head = tail = null;
}
/** Return true if this list contains the element o */
public boolean contains(E e) {
System.out.println("Implementation left as an exercise");
return true;
}
/** Return the element from this list at the specified index */
public E get(int index) {
System.out.println("Implementation left as an exercise");
return null;
}
/** Return the index of the head matching element in this list.
* Return -1 if no match. */
public int indexOf(E e) {
System.out.println("Implementation left as an exercise");
return 0;
}
/** Return the index of the last matching element in this list
* Return -1 if no match. */
public int lastIndexOf(E e) {
System.out.println("Implementation left as an exercise");
return 0;
}
/** Replace the element at the specified position in this list
* with the specified element. */
public E set(int index, E e) {
System.out.println("Implementation left as an exercise");
return null;
}
private static class Node {
E element;
Node next;
public Node(E element) {
this.element = element;
}
}
}
MyAbstractList.java
public abstract class MyAbstractList implements MyList {
protected int size = 0; // The size of the list
/** Create a default list */
protected MyAbstractList() {
}
/** Create a list from an array of objects */
protected MyAbstractList(E[] objects) {
for (int i = 0; i < objects.length; i++)
add(objects[i]);
}
/** Add a new element at the end of this list */
public void add(E e) {
add(size, e);
}
/** Return true if this list contains no elements */
public boolean isEmpty() {
return size == 0;
}
/** Return the number of elements in this list */
public int size() {
return size;
}
/** Remove the first occurrence of the element o from this list.
* Shift any subsequent elements to the left.
* Return true if the element is removed. */
public boolean remove(E e) {
if (indexOf(e) >= 0) {
remove(indexOf(e));
return true;
}
else
return false;
}
}
MyList.java
public interface MyList {
/** Add a new element at the end of this list */
public void add(E e);
/** Add a new element at the specified index in this list */
public void add(int index, E e);
/** Clear the list */
public void clear();
/** Return true if this list contains the element */
public boolean contains(E e);
/** Return the element from this list at the specified index */
public E get(int index);
/** Return the index of the first matching element in this list.
* Return -1 if no match. */
public int indexOf(E e);
/** Return true if this list contains no elements */
public boolean isEmpty();
/** Return the index of the last matching element in this list
* Return -1 if no match. */
public int lastIndexOf(E e);
/** Remove the first occurrence of the element o from this list.
* Shift any subsequent elements to the left.
* Return true if the element is removed. */
public boolean remove(E e);
/** Remove the element at the specified position in this list
* Shift any subsequent elements to the left.
* Return the element that was removed from the list. */
public E remove(int index);
/** Replace the element at the specified position in this list
* with the specified element and returns the new set. */
public Object set(int index, E e);
/** Return the number of elements in this list */
public int size();
}
Output:
Linked List Elements : [AAAAA, 1, 2, 3, ZZZZZ]
First element: AAAAA
Second element: ZZZZZ
Removed First Element: AAAAA
Now Linked List Elements : [1, 2, 3, ZZZZZ]
Removed Last Element: ZZZZZ
Now Linked List Elements : [1, 2, 3]
Removed all element:
Now Linked List Elements : []

More Related Content

PDF
Given below is the completed implementation of MyLinkedList class. O.pdf
PDF
public class MyLinkedListltE extends ComparableltEgtg.pdf
PDF
Note             Given Code modified as required and required met.pdf
PDF
import java-util--- public class MyLinkedList{ public static void.pdf
PDF
STAGE 2 The Methods 65 points Implement all the methods t.pdf
PDF
Class DiagramIn the Assignment #10, you are given three files Ass.pdf
PDF
Fix my codeCode.pdf
PDF
Implementation The starter code includes List.java. You should not c.pdf
Given below is the completed implementation of MyLinkedList class. O.pdf
public class MyLinkedListltE extends ComparableltEgtg.pdf
Note             Given Code modified as required and required met.pdf
import java-util--- public class MyLinkedList{ public static void.pdf
STAGE 2 The Methods 65 points Implement all the methods t.pdf
Class DiagramIn the Assignment #10, you are given three files Ass.pdf
Fix my codeCode.pdf
Implementation The starter code includes List.java. You should not c.pdf

Similar to Hi,I have added the methods and main class as per your requirement.pdf (20)

PDF
please i need help Im writing a program to test the merge sort alg.pdf
PDF
The LinkedList1 class implements a Linked list. class.pdf
PDF
Please help me to make a programming project I have to sue them today- (1).pdf
PDF
import java.util.Iterator; import java.util.NoSuchElementException; .pdf
PDF
hi i have to write a java program involving link lists. i have a pro.pdf
PDF
LabProgram.javaimport java.util.NoSuchElementException;public .pdf
PDF
Labprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdf
DOCX
Please complete all the code as per instructions in Java programming.docx
PDF
How do I fix it in LinkedList.javaLabProgram.javaLinkedList.jav.pdf
PDF
Note- Can someone help me with the Public boolean add(E value) method.pdf
DOCX
The MyLinkedList class used in Listing 24.6 is a one-way directional .docx
PDF
Implement the additional 5 methods as indicated in the LinkedList fi.pdf
PDF
Copy your completed LinkedList class from Lab 3 into the LinkedList..pdf
DOCX
Note- Can someone help me with the private E get(int index- int curren (1).docx
PDF
Write a Java Class to Implement a Generic Linked ListYour list mus.pdf
PDF
File LinkedList.java Defines a doubly-l.pdf
PDF
Here is the editable codeSolutionimport java.util.NoSuchEleme.pdf
PDF
PLEASE MAKE SURE THE PROGRAM IS ASKING FOR INPUT FROM USER TO ADD OR.pdf
PDF
Rewrite this code so it can use a generic type instead of integers. .pdf
PDF
Note- Can someone help me with the public boolean isEmpty()- public bo.pdf
please i need help Im writing a program to test the merge sort alg.pdf
The LinkedList1 class implements a Linked list. class.pdf
Please help me to make a programming project I have to sue them today- (1).pdf
import java.util.Iterator; import java.util.NoSuchElementException; .pdf
hi i have to write a java program involving link lists. i have a pro.pdf
LabProgram.javaimport java.util.NoSuchElementException;public .pdf
Labprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdf
Please complete all the code as per instructions in Java programming.docx
How do I fix it in LinkedList.javaLabProgram.javaLinkedList.jav.pdf
Note- Can someone help me with the Public boolean add(E value) method.pdf
The MyLinkedList class used in Listing 24.6 is a one-way directional .docx
Implement the additional 5 methods as indicated in the LinkedList fi.pdf
Copy your completed LinkedList class from Lab 3 into the LinkedList..pdf
Note- Can someone help me with the private E get(int index- int curren (1).docx
Write a Java Class to Implement a Generic Linked ListYour list mus.pdf
File LinkedList.java Defines a doubly-l.pdf
Here is the editable codeSolutionimport java.util.NoSuchEleme.pdf
PLEASE MAKE SURE THE PROGRAM IS ASKING FOR INPUT FROM USER TO ADD OR.pdf
Rewrite this code so it can use a generic type instead of integers. .pdf
Note- Can someone help me with the public boolean isEmpty()- public bo.pdf
Ad

More from annaelctronics (20)

PDF
two singals are expected. one is for CH3, the oth.pdf
PDF
There is in fact a stronger problem, namely 2p C .pdf
PDF
The term Lewis acid refers to a definition of aci.pdf
PDF
NHC(=O)CH3 NH2 OH .pdf
PDF
MnO2 may act as a catalyst.in the other reaction .pdf
PDF
What are P and R hereSolutionWhat are P and R here.pdf
PDF
Intermolecular attractions are attractions betwee.pdf
PDF
It is insoluble in water. .pdf
PDF
Write it using the ^ symbol. For example 1.34 10^6Solutio.pdf
PDF
Xenodiagnosis is the method used to document presesnce of a microorg.pdf
PDF
u(x)= ( -4x)Solutionu(x)= ( -4x).pdf
PDF
There are many more conditions than just the norms of the culture th.pdf
PDF
The three layers of smooth muscle that includes mucosa. innermost tu.pdf
PDF
The independent variable is the one which changes in each plant. Thi.pdf
PDF
Species diversity is more in near island as rate of immigration is m.pdf
PDF
Solution Flies do not have teeth for chewing food.So,like human f.pdf
PDF
Program To change this license header, choose License Heade.pdf
PDF
plexusFormed from anterioe rani o these spinal nervesMajor nerve.pdf
PDF
Ok, so the number of double bond equivalents in the compound is [C4H.pdf
PDF
order of overlap of atomic orbitals from highest extent of overlap t.pdf
two singals are expected. one is for CH3, the oth.pdf
There is in fact a stronger problem, namely 2p C .pdf
The term Lewis acid refers to a definition of aci.pdf
NHC(=O)CH3 NH2 OH .pdf
MnO2 may act as a catalyst.in the other reaction .pdf
What are P and R hereSolutionWhat are P and R here.pdf
Intermolecular attractions are attractions betwee.pdf
It is insoluble in water. .pdf
Write it using the ^ symbol. For example 1.34 10^6Solutio.pdf
Xenodiagnosis is the method used to document presesnce of a microorg.pdf
u(x)= ( -4x)Solutionu(x)= ( -4x).pdf
There are many more conditions than just the norms of the culture th.pdf
The three layers of smooth muscle that includes mucosa. innermost tu.pdf
The independent variable is the one which changes in each plant. Thi.pdf
Species diversity is more in near island as rate of immigration is m.pdf
Solution Flies do not have teeth for chewing food.So,like human f.pdf
Program To change this license header, choose License Heade.pdf
plexusFormed from anterioe rani o these spinal nervesMajor nerve.pdf
Ok, so the number of double bond equivalents in the compound is [C4H.pdf
order of overlap of atomic orbitals from highest extent of overlap t.pdf
Ad

Recently uploaded (20)

PDF
HVAC Specification 2024 according to central public works department
PPTX
202450812 BayCHI UCSC-SV 20250812 v17.pptx
PDF
Indian roads congress 037 - 2012 Flexible pavement
PPTX
History, Philosophy and sociology of education (1).pptx
PDF
IGGE1 Understanding the Self1234567891011
PDF
David L Page_DCI Research Study Journey_how Methodology can inform one's prac...
PPTX
B.Sc. DS Unit 2 Software Engineering.pptx
PDF
1_English_Language_Set_2.pdf probationary
DOC
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
PDF
Practical Manual AGRO-233 Principles and Practices of Natural Farming
PDF
advance database management system book.pdf
PPTX
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
PDF
medical_surgical_nursing_10th_edition_ignatavicius_TEST_BANK_pdf.pdf
PDF
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
PDF
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
PDF
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
PPTX
Introduction to Building Materials
PDF
Trump Administration's workforce development strategy
PPTX
Unit 4 Computer Architecture Multicore Processor.pptx
PDF
LDMMIA Reiki Yoga Finals Review Spring Summer
HVAC Specification 2024 according to central public works department
202450812 BayCHI UCSC-SV 20250812 v17.pptx
Indian roads congress 037 - 2012 Flexible pavement
History, Philosophy and sociology of education (1).pptx
IGGE1 Understanding the Self1234567891011
David L Page_DCI Research Study Journey_how Methodology can inform one's prac...
B.Sc. DS Unit 2 Software Engineering.pptx
1_English_Language_Set_2.pdf probationary
Soft-furnishing-By-Architect-A.F.M.Mohiuddin-Akhand.doc
Practical Manual AGRO-233 Principles and Practices of Natural Farming
advance database management system book.pdf
Onco Emergencies - Spinal cord compression Superior vena cava syndrome Febr...
medical_surgical_nursing_10th_edition_ignatavicius_TEST_BANK_pdf.pdf
احياء السادس العلمي - الفصل الثالث (التكاثر) منهج متميزين/كلية بغداد/موهوبين
Vision Prelims GS PYQ Analysis 2011-2022 www.upscpdf.com.pdf
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
Introduction to Building Materials
Trump Administration's workforce development strategy
Unit 4 Computer Architecture Multicore Processor.pptx
LDMMIA Reiki Yoga Finals Review Spring Summer

Hi,I have added the methods and main class as per your requirement.pdf

  • 1. Hi, I have added the methods and main class as per your requirement. it is working fine now. Highlighted the code changes. MyLinkedListTest.java public class MyLinkedListTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MyLinkedList list = new MyLinkedList(); list.addFirst("AAAAA"); list.add("1"); list.add("2"); list.add("3"); list.addLast("ZZZZZ"); System.out.println("Linked List Elements : "+list.toString()); System.out.println("First element: "+list.getFirst()); System.out.println("Second element: "+list.getLast()); System.out.println("Removed First Element: "+list.removeFirst()); System.out.println("Now Linked List Elements : "+list.toString()); System.out.println("Removed Last Element: "+list.removeLast()); System.out.println("Now Linked List Elements : "+list.toString()); System.out.println("Removed all element: "); list.removeAll(); System.out.println("Now Linked List Elements : "+list.toString()); } } MyLinkedList.java public class MyLinkedList extends MyAbstractList { private Node head, tail; /** Create a default list */ public MyLinkedList() {
  • 2. } /** Create a list from an array of objects */ public MyLinkedList(E[] objects) { super(objects); } /** Return the head element in the list */ public E getFirst() { if (size == 0) { return null; } else { return (E)head.element; } } /** Return the last element in the list */ public E getLast() { if (size == 0) { return null; } else { return (E)tail.element; } } /** Add an element to the beginning of the list */ public void addFirst(E e) { Node newNode = new Node(e); // Create a new 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 newNode = new Node(e); // Create a new for element e if (tail == null) {
  • 3. 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 current = head; for (int i = 1; i < index; i++) { current = current.next; } Node temp = current.next; current.next = new Node(e); (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 {
  • 4. Node temp = head; head = head.next; size--; if (head == null) { tail = null; } return (E)temp.element; } } /** Remove all elements from list */ public void removeAll() { while(true) { if (size == 0) { break; } else { Node temp = head; head = head.next; size--; if (head == null) { tail = null; } } } } /** 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 temp = head; head = tail = null; size = 0;
  • 5. return (E)temp.element; } else { Node current = head; for (int i = 0; i < size - 2; i++) { current = current.next; } Node temp = tail; tail = current; tail.next = null; size--; return (E)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 previous = head; for (int i = 1; i < index; i++) { previous = previous.next; } Node current = previous.next; previous.next = current.next; size--; return (E)current.element; }
  • 6. } /** Override toString() to return elements in the list */ public String toString() { StringBuilder result = new StringBuilder("["); Node current = head; 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("]"); // Insert the closing ] in the string return result.toString(); } /** Clear the list */ public void clear() { head = tail = null; } /** Return true if this list contains the element o */ public boolean contains(E e) { System.out.println("Implementation left as an exercise"); return true; } /** Return the element from this list at the specified index */ public E get(int index) { System.out.println("Implementation left as an exercise"); return null; } /** Return the index of the head matching element in this list. * Return -1 if no match. */ public int indexOf(E e) { System.out.println("Implementation left as an exercise"); return 0;
  • 7. } /** Return the index of the last matching element in this list * Return -1 if no match. */ public int lastIndexOf(E e) { System.out.println("Implementation left as an exercise"); return 0; } /** Replace the element at the specified position in this list * with the specified element. */ public E set(int index, E e) { System.out.println("Implementation left as an exercise"); return null; } private static class Node { E element; Node next; public Node(E element) { this.element = element; } } } MyAbstractList.java public abstract class MyAbstractList implements MyList { protected int size = 0; // The size of the list /** Create a default list */ protected MyAbstractList() { } /** Create a list from an array of objects */ protected MyAbstractList(E[] objects) { for (int i = 0; i < objects.length; i++) add(objects[i]); } /** Add a new element at the end of this list */ public void add(E e) { add(size, e);
  • 8. } /** Return true if this list contains no elements */ public boolean isEmpty() { return size == 0; } /** Return the number of elements in this list */ public int size() { return size; } /** Remove the first occurrence of the element o from this list. * Shift any subsequent elements to the left. * Return true if the element is removed. */ public boolean remove(E e) { if (indexOf(e) >= 0) { remove(indexOf(e)); return true; } else return false; } } MyList.java public interface MyList { /** Add a new element at the end of this list */ public void add(E e); /** Add a new element at the specified index in this list */ public void add(int index, E e); /** Clear the list */ public void clear(); /** Return true if this list contains the element */ public boolean contains(E e); /** Return the element from this list at the specified index */ public E get(int index); /** Return the index of the first matching element in this list. * Return -1 if no match. */
  • 9. public int indexOf(E e); /** Return true if this list contains no elements */ public boolean isEmpty(); /** Return the index of the last matching element in this list * Return -1 if no match. */ public int lastIndexOf(E e); /** Remove the first occurrence of the element o from this list. * Shift any subsequent elements to the left. * Return true if the element is removed. */ public boolean remove(E e); /** Remove the element at the specified position in this list * Shift any subsequent elements to the left. * Return the element that was removed from the list. */ public E remove(int index); /** Replace the element at the specified position in this list * with the specified element and returns the new set. */ public Object set(int index, E e); /** Return the number of elements in this list */ public int size(); } Output: Linked List Elements : [AAAAA, 1, 2, 3, ZZZZZ] First element: AAAAA Second element: ZZZZZ Removed First Element: AAAAA Now Linked List Elements : [1, 2, 3, ZZZZZ] Removed Last Element: ZZZZZ Now Linked List Elements : [1, 2, 3] Removed all element: Now Linked List Elements : [] Solution Hi, I have added the methods and main class as per your requirement. it is working fine now. Highlighted the code changes.
  • 10. MyLinkedListTest.java public class MyLinkedListTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MyLinkedList list = new MyLinkedList(); list.addFirst("AAAAA"); list.add("1"); list.add("2"); list.add("3"); list.addLast("ZZZZZ"); System.out.println("Linked List Elements : "+list.toString()); System.out.println("First element: "+list.getFirst()); System.out.println("Second element: "+list.getLast()); System.out.println("Removed First Element: "+list.removeFirst()); System.out.println("Now Linked List Elements : "+list.toString()); System.out.println("Removed Last Element: "+list.removeLast()); System.out.println("Now Linked List Elements : "+list.toString()); System.out.println("Removed all element: "); list.removeAll(); System.out.println("Now Linked List Elements : "+list.toString()); } } MyLinkedList.java public class MyLinkedList extends MyAbstractList { private Node head, tail; /** Create a default list */ public MyLinkedList() { } /** Create a list from an array of objects */ public MyLinkedList(E[] objects) { super(objects);
  • 11. } /** Return the head element in the list */ public E getFirst() { if (size == 0) { return null; } else { return (E)head.element; } } /** Return the last element in the list */ public E getLast() { if (size == 0) { return null; } else { return (E)tail.element; } } /** Add an element to the beginning of the list */ public void addFirst(E e) { Node newNode = new Node(e); // Create a new 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 newNode = new Node(e); // Create a new for element e 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
  • 12. 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 current = head; for (int i = 1; i < index; i++) { current = current.next; } Node temp = current.next; current.next = new Node(e); (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 temp = head; head = head.next; size--; if (head == null) {
  • 13. tail = null; } return (E)temp.element; } } /** Remove all elements from list */ public void removeAll() { while(true) { if (size == 0) { break; } else { Node temp = head; head = head.next; size--; if (head == null) { tail = null; } } } } /** 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 temp = head; head = tail = null; size = 0; return (E)temp.element; } else { Node current = head;
  • 14. for (int i = 0; i < size - 2; i++) { current = current.next; } Node temp = tail; tail = current; tail.next = null; size--; return (E)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 previous = head; for (int i = 1; i < index; i++) { previous = previous.next; } Node current = previous.next; previous.next = current.next; size--; return (E)current.element; } } /** Override toString() to return elements in the list */ public String toString() { StringBuilder result = new StringBuilder("[");
  • 15. Node current = head; 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("]"); // Insert the closing ] in the string return result.toString(); } /** Clear the list */ public void clear() { head = tail = null; } /** Return true if this list contains the element o */ public boolean contains(E e) { System.out.println("Implementation left as an exercise"); return true; } /** Return the element from this list at the specified index */ public E get(int index) { System.out.println("Implementation left as an exercise"); return null; } /** Return the index of the head matching element in this list. * Return -1 if no match. */ public int indexOf(E e) { System.out.println("Implementation left as an exercise"); return 0; } /** Return the index of the last matching element in this list * Return -1 if no match. */ public int lastIndexOf(E e) {
  • 16. System.out.println("Implementation left as an exercise"); return 0; } /** Replace the element at the specified position in this list * with the specified element. */ public E set(int index, E e) { System.out.println("Implementation left as an exercise"); return null; } private static class Node { E element; Node next; public Node(E element) { this.element = element; } } } MyAbstractList.java public abstract class MyAbstractList implements MyList { protected int size = 0; // The size of the list /** Create a default list */ protected MyAbstractList() { } /** Create a list from an array of objects */ protected MyAbstractList(E[] objects) { for (int i = 0; i < objects.length; i++) add(objects[i]); } /** Add a new element at the end of this list */ public void add(E e) { add(size, e); } /** Return true if this list contains no elements */ public boolean isEmpty() { return size == 0;
  • 17. } /** Return the number of elements in this list */ public int size() { return size; } /** Remove the first occurrence of the element o from this list. * Shift any subsequent elements to the left. * Return true if the element is removed. */ public boolean remove(E e) { if (indexOf(e) >= 0) { remove(indexOf(e)); return true; } else return false; } } MyList.java public interface MyList { /** Add a new element at the end of this list */ public void add(E e); /** Add a new element at the specified index in this list */ public void add(int index, E e); /** Clear the list */ public void clear(); /** Return true if this list contains the element */ public boolean contains(E e); /** Return the element from this list at the specified index */ public E get(int index); /** Return the index of the first matching element in this list. * Return -1 if no match. */ public int indexOf(E e); /** Return true if this list contains no elements */ public boolean isEmpty(); /** Return the index of the last matching element in this list
  • 18. * Return -1 if no match. */ public int lastIndexOf(E e); /** Remove the first occurrence of the element o from this list. * Shift any subsequent elements to the left. * Return true if the element is removed. */ public boolean remove(E e); /** Remove the element at the specified position in this list * Shift any subsequent elements to the left. * Return the element that was removed from the list. */ public E remove(int index); /** Replace the element at the specified position in this list * with the specified element and returns the new set. */ public Object set(int index, E e); /** Return the number of elements in this list */ public int size(); } Output: Linked List Elements : [AAAAA, 1, 2, 3, ZZZZZ] First element: AAAAA Second element: ZZZZZ Removed First Element: AAAAA Now Linked List Elements : [1, 2, 3, ZZZZZ] Removed Last Element: ZZZZZ Now Linked List Elements : [1, 2, 3] Removed all element: Now Linked List Elements : []