Question

In: Computer Science

1- Use FirstLastList: Write method public void join(FirstLastList SecondList) such that given two linked lists, join...

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 

Solutions

Expert Solution

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


Related Solutions

3- Use FirstLastList: Write method public void join(FirstLastList SecondList) such that given two linked lists, join...
3- 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=[]. 4- 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. public class FirstLastList { private...
JAVA Given the header of a method public static void m1 (int[ ] max) Write down...
JAVA Given the header of a method public static void m1 (int[ ] max) Write down Java codes to invoke m1 method, declare variables as needed, (Do NOT implement the method)
Given the following method declaration, write a valid method call. public static void calcArea(String roomName, int...
Given the following method declaration, write a valid method call. public static void calcArea(String roomName, int length, int width)
JAVA please write this method public static void recursiveSelectionSort(int[] arr) { }
JAVA please write this method public static void recursiveSelectionSort(int[] arr) { }
JAVA please write this method public static void recursiveMergeSort(int[] arr) { }
JAVA please write this method public static void recursiveMergeSort(int[] arr) { }
With C++, 1. Assume we use two linked lists that represent Set A and Set B...
With C++, 1. Assume we use two linked lists that represent Set A and Set B respectively. Implement the following function to calculate A = A U B. Note that a SET should not contain duplicated elements (e.g., integers). void unionLL (Node * LA, Node * LB); 2. There are two linked lists, LA and LB. Their elements are both in the non-descending order. Implement the following function to merge LA and LB into a new linked list, LC. Make...
Given two lists, write python code to print “True” if the two lists have at least...
Given two lists, write python code to print “True” if the two lists have at least one common element. For example, x = [1,2,3], y=[3,4,5], then the program should print “True” since there is a common element 3.
2 a. Write a new method for the Greeter class,    public void swapNames(Greeter other) {...}...
2 a. Write a new method for the Greeter class,    public void swapNames(Greeter other) {...} that swaps the names of this greeter and another instance. b. write a new method for the Greeter class:     public Greeter createQualifiedGreeter(String qualifier) { ..... } that returns a new Greeter object with its name being the qualifier string followed by " " and the executing greeter's name (i.e. this.name). For example:    Greeter g = new Greeter("world");    Greeter g2 = g.createQualifiedGreeter("beautiful");...
Write a method public static void minMax(int[] arr) that takes an array of unique ints of...
Write a method public static void minMax(int[] arr) that takes an array of unique ints of length at least two as an argument, and swaps the smallest value of the array into the 0th position and swaps the largest value of the array into the last position. For example, if int[] a = {4, 3, 2, 6, 1, 5}, the method call minMax(a) should modify the array so that it is {1, 3, 2, 5, 4, 6}. The method should...
Suppose you are given two circularly linked lists, L and M. Create an algorithm for telling...
Suppose you are given two circularly linked lists, L and M. Create an algorithm for telling if L and M store the same sequence of elements (but perhaps with different starting points). Please provide a main() function with it in Java to test it.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT