import [Link].
*;
class Node{
int info;
Node next;
Node(){
Node(int x){
info = x;
next = null;
Node(int x, Node p){
info = x;
next = p;
class MyList{
Node head, tail;
MyList(){
head = tail= null;
boolean isEmpty(){
return head == null;
void clear(){
head = tail= null;
}
void addToHead(int x){
if(isEmpty()){
head = tail = new Node(x);
} else {
Node q = new Node(x,head);
head = q;
void addToTail(int x){
if(isEmpty()){
head = tail = new Node(x);
} else {
Node q = new Node(x);
[Link] = q;
tail = q;
void deletePos(int x){
if (head == null)
return;
Node temp = head;
if(x == 0) {
head = [Link];
return;
}
for (int i=0; temp!= null && i<x-1; i++)
temp = [Link];
if(temp == null || [Link] == null)
return;
Node next = [Link];
[Link] = next;
void deleteAfterOneElement(int target){
Node p = head;
while (p!=null && [Link] != target){
p=[Link];
if(p!=null && [Link] != null){
[Link] = [Link];
if([Link]==null){
tail = p;
void addBeforeElement(int target, int addNumber){
Node current = head;
while (current != null && [Link] != null && [Link] != target){
current = [Link];
if (current != null && [Link] != null){
Node newNode = new Node(addNumber);
[Link] = [Link];
[Link] = newNode;
void deleteElement(int target){
Node p = head;
Node prev = null;
while (p!=null && [Link] != target){
prev = p;
p=[Link];
if(p!=null){
if(prev == null){
head = [Link];
if(head == null){
tail = null;
} else {
[Link] = [Link];
if([Link] == null){
tail = prev;
void traverse(){
Node p = head;
if(isEmpty()){
[Link]("Empty list encountered.\n");
return;
[Link]([Link]+" ");
while([Link]!=null){
p = [Link];
[Link]([Link] + " ");
[Link]("\n");
return;
void insertAfterNumber(int newnode_info, int target){
Node p = head;
while (p != null && [Link] != target){
p = [Link];
if(p!= null){
Node q = new Node(newnode_info, [Link]);
[Link] = q;
if (p== tail){
tail = q;
}
boolean findPosition(int target){
Node p = head;
while(p != null){
if([Link] == target){
return true;
p = [Link];
return false;
int count(){
int count = 0;
Node p = head;
while (p != null){
count++;
p = [Link];
return count;
void insertSorted(int value){
Node newNode = new Node (value);
if(head == null || value < [Link]){
[Link] = head;
head = newNode;
return;
}
Node current = head;
while ([Link] != null && [Link] < value){
current = [Link];
[Link] = [Link];
[Link] = newNode;
void sortList(){
Node p = head, index = null;
int temp;
if(head == null){
return;
} else {
while(p != null){
index = [Link];
while(index != null){
if([Link] > [Link]){
temp = [Link];
[Link] = [Link];
[Link] = temp;
index = [Link];
p = [Link];
}
String printList(){
String finalString = "";
Node p = head;
String t = [Link] + " ";
finalString += t;
while([Link]!=null){
p = [Link];
t = [Link] + " ";
finalString += t;
return finalString;
int maxValue(){
int maxValue = [Link];
Node current = [Link];
while(current != null){
if([Link] > maxValue ){
maxValue = [Link];
current = [Link];
return maxValue;
int minValue(){
int minValue = [Link];
Node current = [Link];
while(current != null){
if([Link] < minValue ){
minValue = [Link];
current = [Link];
return minValue;
int sum(){
Node p = head;
int sum = 0;
while (p != null){
sum += [Link];
p = [Link];
return sum;
double sumdb(){
Node p = head;
int sum = 0;
while (p != null){
sum += [Link];
p = [Link];
return sum;
}
boolean checkSort(){
Node p = head;
while(p != null && [Link] != null){
if([Link] > [Link]){
return false;
p=[Link];
return true;
void reverse(){
Node p = head;
Node prev = null;
Node nextNode;
while(p!= null){
nextNode = [Link];
[Link] = prev;
prev = p;
p = nextNode;
head = prev;
void mergeList(MyList list2){
Node p1 = head;
Node p2 = [Link];
MyList mergeList = new MyList();
while (p1 != null && p2 != null){
if ([Link] < [Link]){
[Link]([Link]);
p1 = [Link];
else{
[Link]([Link]);
p2 = [Link];
while(p1 != null){
[Link]([Link]);
p1 = [Link];
while(p2 != null){
[Link]([Link]);
p2 = [Link];
head = [Link];
tail = [Link];
void attachList(MyList list2){
Node p = head;
if( p == null){
p = [Link];
} else{
Node current = p;
while([Link] != null){
current = [Link];
[Link] = [Link];
boolean isEqual(MyList list2){
Node p1 = head;
Node p2 = [Link];
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
while (p1 != null){
[Link]([Link]);
p1=[Link];
while (p2 != null){
[Link]([Link]);
p2=[Link];
if ([Link](set2) ){
[Link]("yes");
return true;
}else{
[Link]("no");
return false;
public class List{
public static void main(String[] args){
Scanner sc = new Scanner ([Link]);
MyList List1 = new MyList();
MyList List2 = new MyList();
int option = [Link](), n, x;
n = [Link]();
switch(option){
case 1:{
for(int i = 1; i<= n; i++){
[Link]([Link]());
x= [Link]();
[Link]("1. Add "+x+" before the head of " + n +"-element list: ");
[Link]();
[Link](x);
[Link]();
break;
case 2:{
for(int i = 1; i<=n; i++){
[Link]([Link]());
x = [Link]();
[Link]("2. Add " + x+" after the tail of "+n+"-element list: ");
[Link]();
[Link](x);
[Link]();
break;
case 3: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
int target = [Link]();
int newnode_info = [Link]();
[Link]("3. Insert an element " + newnode_info + " after the element "+ target+ " in
the "+n+"-element list: ");
[Link]();
[Link](newnode_info, target);
[Link]();
break;
case 4: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("4. Traverse the 13-element list: ");
[Link]();
[Link]();
break;
case 5: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("5. Delete the head of the 13-element list: ");
[Link]();
[Link](0);
[Link]();
break;
case 6: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("6. Delete the tail of the 12-element list: ");
[Link]();
[Link](11);
[Link]();
break;
}
case 7: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
x = [Link]();
[Link]("7. Delete the element after the element 1 of the 11-element list: ");
[Link]();
[Link](x);
[Link]();
break;
case 8: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
x = [Link]();
[Link]("8. Delete the element 3 in the 10-element list: ");
[Link]();
[Link](x);
[Link]();
break;
case 9: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
x = [Link]();
[Link]("9. Search the element 6 in the 9-element list: ");
[Link]();
if([Link](x)){
[Link](x);
};
break;
case 10:{
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("10. Count the number of the elements of the 9-element list: ");
[Link]();
[Link]([Link]());
break;
case 11:{
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("11. Delete the 3rd element in the 9-node list: ");
[Link]();
[Link](2);
[Link]();
break;
case 12:{
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("12. Sort in accending order the 8-node list: ");
[Link]();
[Link]();
[Link]();
break;
case 13:{
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("13. Delete the element 1 in the 8-node list: ");
[Link]();
[Link](1);
[Link]();
break;
case 14: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
}
[Link]("14. create and return array containing info of all nodes in the 7-node list: ");
[Link]();
break;
case 15: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
x = [Link]();
for(int i = 1; i<=x; i++){
[Link]([Link]());
[Link]("15. Merge two ordered singly linked lists of integers into one ordered list: 7-
node list = " + [Link]() +"; 5-node list: " + [Link]());
[Link](List2);
[Link]();
break;
case 16: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
x = [Link]();
int y = [Link]();
[Link]("16. add a node with value 14 before the node 15 in the 12-node list: ");
[Link]();
[Link](15, 14);
[Link]();
break;
case 17: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
x = [Link]();
for(int i = 1; i<=x; i++){
[Link]([Link]());
[Link]("17. Attach a singly linked list of 6 elements "+ [Link]()+" to the end
of another singly linked list of 13 nodes: "+ [Link]());
[Link](List2);
[Link]();
break;
case 18: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("18. find and return the maximum value in the 19-node list: ");
[Link]();
[Link]([Link]());
break;
}
case 19: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("19. find and return the minimum value in the 19-node list: ");
[Link]();
[Link]([Link]());
break;
case 20: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("20. return the sum of all values in the 19-node list: ");
[Link]();
[Link]([Link]());
break;
case 21: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("21. return the average of all values in the 19-node list: ");
[Link]();
[Link]([Link]("%.2f", [Link]()/n));
break;
}
case 22: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("22. check and return true if the 19-node list "+ [Link]()+"is sorted,
return false if the list is not sorted.");
[Link]([Link]());
break;
case 23: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
[Link]("23. sort the 19-node list: "+ [Link]() +"then insert a node with value
40 into the sorted list so that the new list is a sorted list");
[Link]();
[Link]();
[Link](40);
[Link]();
break;
case 24: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
}
[Link]("24. Reverse the singly linked list of 20 nodes: ");
[Link]();
[Link]();
[Link]();
break;
case 25: {
for(int i = 1; i<=n; i++){
[Link]([Link]());
x = [Link]();
for(int i = 1; i<=x; i++){
[Link]([Link]());
[Link]("25. Check whether two singly linked list have the same contents: 1st list of 5
elements: "+[Link]()+"; 2nd list of 5 elements: "+[Link]());
[Link](List2);
break;