In: Computer Science
1- Use FirstLastList: Write method public void
join(FirstLastList SecondList) such that given two
linked lists, join them together to give one. So if the lists lst1=
[1,3,7,4] and lst2=[2,4,5,8,6], the result of lst1.join(lst2) is
lst1=[1,3,7,4,2,4,5,8,6] and lst2=[].
2- Use FirstLastList: Write method public void
swap(). It swaps the first and last elements of a
FirstLastList. So if lst1= [1,3,7,4], lst1.swap() = [4,3,7,1].
Display or throw an exception if the list contains less than two
elements.
Demonstrate by displaying the list contents before
and after calling the above methods. Eg:
lst1
[1,3,7,4]
lst2
[2,4,5,8,6]
lst1.join(lst2)
[1,3,7,4,2,4,5,8,6]
lst1.swap()
[6,3,7,4,2,4,5,8,1]
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// firstLastList.java
// demonstrates list with first and last references
// to run this program: C>java FirstLastApp
////////////////////////////////////////////////////////////////
class Link
{
public long dData; // data item
public Link next; // next link in list
//
-------------------------------------------------------------
public Link(long d) // constructor
{ dData = d; }
//
-------------------------------------------------------------
public void displayLink() // display this link
{ System.out.print(dData + " "); }
//
-------------------------------------------------------------
} // end class Link
////////////////////////////////////////////////////////////////
class FirstLastList
{
private Link first; // ref to first link
private Link last; // ref to last link
//
-------------------------------------------------------------
public FirstLastList() // constructor
{
first = null; // no links on list yet
last = null;
}
//
-------------------------------------------------------------
public boolean isEmpty() // true if no links
{ return first==null; }
//
-------------------------------------------------------------
public void insertFirst(long dd) // insert at front of list
{
Link newLink = new Link(dd); // make new link
if( isEmpty() ) // if empty list,
last = newLink; // newLink <-- last
newLink.next = first; // newLink --> old first
first = newLink; // first --> newLink
}
//
-------------------------------------------------------------
public void insertLast(long dd) // insert at end of list
{
Link newLink = new Link(dd); // make new link
if( isEmpty() ) // if empty list,
first = newLink; // first --> newLink
else
last.next = newLink; // old last --> newLink
last = newLink; // newLink <-- last
}
//
-------------------------------------------------------------
public long deleteFirst() // delete first link
{ // (assumes non-empty list)
long temp = first.dData;
if(first.next == null) // if only one item
last = null; // null <-- last
first = first.next; // first --> old next
return temp;
}
//
-------------------------------------------------------------
public void displayList()
{
System.out.print("List (first-->last): ");
Link current = first; // start at beginning
while(current != null) // until end of list,
{
current.displayLink(); // print data
current = current.next; // move to next link
}
System.out.println("");
}
//
-------------------------------------------------------------
} // end class FirstLastList
////////////////////////////////////////////////////////////////
class FirstLastApp
{
public static void main(String[] args)
{ // make a new list
FirstLastList theList = new FirstLastList();
theList.insertFirst(22); // insert at front
theList.insertFirst(44);
theList.insertFirst(66);
theList.insertLast(11); // insert at rear
theList.insertLast(33);
theList.insertLast(55);
theList.displayList(); // display the list
theList.deleteFirst(); // delete first two items
theList.deleteFirst();
theList.displayList(); // display again
} // end main()
} // end class FirstLastApp
////////////////////////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Class FirstLastAppTest.Java is only for testing. Please do not Edit. class FirstLastAppTest { public static void main(String[] args) { FirstLastList lst1 = new FirstLastList(); // Start a new FirstLastList called lst1 lst1.insertLast(1); // Add links with data to the last position lst1.insertLast(3); lst1.insertLast(7); lst1.insertLast(4); System.out.print("\nlst1: "); // print the description for the list lst1.displayList(); // print the contents of the list FirstLastList lst2 = new FirstLastList(); // Start a new FirstLastList called lst2 lst2.insertLast(2); // Add links with data to the last position lst2.insertLast(4); lst2.insertLast(5); lst2.insertLast(8); lst2.insertLast(6); System.out.print("\nlst2: "); // print the description for the list lst2.displayList(); // print the contents of the list System.out.print("\nlst1.join(lst2): "); // print the action to take place: lst1.join(lst2) lst1.join(lst2); // call the join method for lst1 to add lst2 System.out.print("\nlst1: "); // print the description for the list lst1.displayList(); // print the contents of the list lst1; post join() System.out.print("lst2: "); // print the description for the list lst2.displayList(); // print the contents of the list lst2; post join() System.out.print("\nlst1.swap(): "); // print the action to take place: lst1.swap() lst1.swap(); // call the swap method for lst1 System.out.print("\nlst1: "); // print the description for the list lst1.displayList(); // print the contents of the list lst1; post swap() } // end main() } // end class
Save it as FirstLastApp.java
class FirstLastList {
private Link first; // ref to first link
private Link last; // ref to last link
// -------------------------------------------------------------
public FirstLastList() { // constructor
first = null; // no links on list yet
last = null;
}
// -------------------------------------------------------------
public boolean isEmpty() { // true if no links
return first == null;
}
// -------------------------------------------------------------
public void insertFirst(long dd) { // insert at front of list
Link newLink = new Link(dd); // make new link
if (isEmpty()) last = newLink; // if empty list, // newLink <-- last
newLink.next = first; // newLink --> old first
first = newLink; // first --> newLink
}
// -------------------------------------------------------------
public void insertLast(long dd) { // insert at end of list
Link newLink = new Link(dd); // make new link
if (isEmpty()) first = newLink; // if empty list, // first --> newLink
else last.next = newLink; // old last --> newLink
last = newLink; // newLink <-- last
}
// -------------------------------------------------------------
public long deleteFirst() { // delete first link
// (assumes non-empty list)
long temp = first.dData;
if (first.next == null) last = null; // if only one item // null <-- last
first = first.next; // first --> old next
return temp;
}
// -------------------------------------------------------------
public void displayList() {
System.out.print("List (first-->last): ");
Link current = first; // start at beginning
while (current != null) { // until end of list,
current.displayLink(); // print data
current = current.next; // move to next link
}
System.out.println("");
}
// -------------------------------------------------------------
public void join(FirstLastList otherList) {
Link current = otherList.first; // start at beginning
while (current != null) { // until end of list,
this.insertLast(current.dData);
current = current.next; // move to next link
}
otherList.first = null;
}
public void swap() throws Exception {
int count = 0;
Link current = first; // start at beginning
while (current != null) { // until end of list,
count++;
current = current.next; // move to next link
}
if (count < 2) {
throw new Exception("There is not enough element in the list.");
} else {
long firstData = first.dData;
long lastData = last.dData;
first.dData = lastData;
last.dData = firstData;
}
}
}
class Link {
public long dData; // data item
public Link next; // next link in list
// -------------------------------------------------------------
public Link(long d) { // constructor
dData = d;
}
// -------------------------------------------------------------
public void displayLink() { // display this link
System.out.print(dData + " ");
}
// -------------------------------------------------------------
} // end class Link
////////////////////////////////////////////////////////////////
public class FirstLastApp {
public static void main(String[] args) { // make a new list
FirstLastList lst1 = new FirstLastList();
lst1.insertFirst(1);
lst1.insertLast(3);
lst1.insertLast(7);
lst1.insertLast(4);
System.out.print("List 1 is : ");
lst1.displayList();
FirstLastList lst2 = new FirstLastList();
lst2.insertFirst(2);
lst2.insertLast(4);
lst2.insertLast(5);
lst2.insertLast(8);
lst2.insertLast(6);
System.out.print("\nList 2 is : ");
lst2.displayList();
lst1.join(lst2);
System.out.print("\nAfter joining List 1 is : ");
lst1.displayList();
System.out.print("\nList 2 is : ");
lst2.displayList();
try {
lst1.swap();
System.out.println("\nAfter swap the list 1 is : ");
lst1.displayList();
lst2.swap();
System.out.println("\nAfter swap the list 2 is : ");
lst2.displayList();
} catch (Exception e) {
System.out.println(e);
}
}
}
//SAMPLE OUTPUT
//PLEASE LIKE IT RAISE YOUR THUMBS UP
//IF YOU ARE HAVING ANY DOUBT FEEL FREE TO ASK IN COMMENT
SECTION