USE Java
Regulations: This assignment must be done individually. Any similarity between your code answers and another student's or a carbon-copy of an answer found on the Web will be considered plagiarism. None of the built-in classes methods functions of Java CCH Python or any other language can be used for the ADTS. You must implement your own ADTs and their operations Objective: The aim of this assignment is to obtain hands on experience in implementing ADTS, and understanding the theoretical concepts seen in classes the depandanalysis. At the end of this assignment students will know how to implement Stacks and linked Lists how to analyze the complexity of their operations, and work on relevant al s Tasks 1. Using your favorite programming language implementas y linked list with the following operations addFirst remove instalat, removelastest. Last, 2.12 bones marks Write and implement arrive a t that show all the doments of the single linked list starting from the head Explain the worst case in time of your a nithm Implement a stack on the singly linked list with the price of Lab Assignment L. Hint: Using the same Stack class you implemented change the array to an object of the singly linked list class. The functionality of push and pop is now based on the methods of the linked list class 4. Practical application: Balanced parentheses (a) Implement the balanced-bracket checker algorithm of Lab Assignment using the singly linked list implementation of the stack (b) Explain how your algorithm checks for balanced parenthesis in Oin), when the input is a string of length 5. Implement a queue on the singly linked list of lem with the following operations enqueue. dequcu, front, sir, isEmpty. Notchoth operations, que and dequeue, must nun in Orl). 6. Practical application. The merge problem. Given two word lists of integers A and B the aim is to merge A and B producing a sorted lists (a) Write an algorithm that stores A and B in two queues (one in each queue. merges A and B and outputs a sorted lists in O(n) WOS-case time. Not your algorithm must use queues for A, B and S. (b) Implement you algorithm in your favorite programming language (c) Explain how your algorithm runs in On), where is the length of (d) (2 bones marks] Run your algorithm on randomly generated sorted lists A and B of different size: 100, 200, 300, 2000 and record the CPU time taken by the algorithm. Create a table (or a plot) and explain how your algorithm runs in Oin) by inspecting your results Maximum 2 bonus marks Sushi : Your assignment must be suited during the in the section you nee d in Any submission or prior to the end of the will the accepted and mere mark will be given Lale assignments will be given a remark Submissions by email will obecepted 2. Provide the source code for all your programs 3. Run the balanced-bracket checker during the lab and how they work for various sample inputs, including (more may be included during the evaluation in the l a nd are balanced (913(3.3) 57 1 9-46-5) b. 39 (2-3-4[6911) 12-36 9-6011337) 4 Run the Merge sporithm with the following inputs OA-13.5.79 B-23.68.10 ) A=123.45 B -6.7.8.9.10 ( A-24, 16.12 B 13579 A=10,11,12,13 B 123.4 5. Run the recursive algorithm that shows the clements of the game in the camples of 4 6. Explain how your singly linked list, stack and queue work. There will be asked when the lab assignment is submitted. Marks will be deducted if not clear how your algorithms and programs Regulations: This assignment must be done individually. Any similarity between your code answers and another student's, or a carbon-copy of an answer found on the Web will be considered plagiarism. None of the built-in classes/methods/functions of Java C/C++/Python or any other language can be used for the ADTS. You must implement your own ADTs and their operations Objective: The aim of this assignment is to obtain hands on experience in implementing ADTS, and understanding the theoretical concepts seen in class on algorithm design and analysis. At the end of this assignment, students will know how to implement Stacks, Queues and Linked Lists, how to analyze the complexity of their operations, and work on relevant applications Tasks: 1. Using your favorite programming language, implement a singly linked list with the following operations addFirst, removeFirst, add Last, removelast, getFirst, getLast, size. 2. [2 bonus marks] Write and implement a recursive algorithm that shows all the elements of the single linked list, starting from the head. Explain the worst case running time of your algorithm 3. Implement a stack on the singly linked list with the operations of Lab Assignment 1. Hint: Using the same Stack class you implemented, change the array to an object of the singly linked list class. The functionality of push and pop is now based on the methods of the linked list class 4. Practical application 1: Balanced parentheses (a) Implement the balanced-bracket checker algorithm of Lab Assignment using the singly linked list implementation of the stack. (b) Explain how your algorithm checks for balanced parenthesis in O(n), when the input is a string of length n. S. Implement a queue on the singly linked list of Item #1, with the following operations: enqueue, dequeue, front, size, isEmpty. Note: both operations, enqueue and dequeue, must run in O(1). 6. Practical application The merge problem. Given two sorted lists of integers, A and B, the aim is to merge A and B, producing a sorted lists (a) Write an algorithm that stores A and B in two queues (one in each queue), merges A and B and outputs a sorted list Sin On) worst case time. Note: your algorithm must use queues for A, B and S. (b) Implement your algorithm in your favorite programming language. (c) Explain how your algorithm runs in On), where n is the length of S (d) 12 bonus marks] Run your algorithm on randomly generated sorted lists A and B of different sires: 100, 200, 300,.... 2000 and record the CPU time taken by the algorithm. Create a table for a plot) and explain how your algorithm runs in O(n) by inspecting your results. Maximum 2 bonus marks, Submission: Your assignment must be submitted during the lab session in the section you are registered in Any submission on or 15 minutes prior to the end of the lab session will not be accepted and a rere mark will be given. Lale assignments will be given a zero mark. Submissions by email will not be accepted. 2. Provide the source code for all your programs. 3. Run the balanced-bracket checker during the lab and show they work for various sample inputs, including (more may be included during the evaluation in the labsa and dare balanced): a. (9'13 (3+3) 5]"7}] c. ((319-4(6-5)))) b. 13(2-3-[4/[6/9]]]>) d. 2-3* 6/[[[(((9-0)))]]]} } 4. Run the Merge algorithm with the following inputs: (A-1.3.5.7.9 B-2,3,6,8,10 (1) A-1.2.3.4.5 B -6,7,8,9,10 (I) A-2.4.8.16,32 B-1,3,5,7,9 (iv) A-10,11,12,13 B-1.2.3.4 5. Run the recursive algorith in the examples of $4. Explain how ur sinely linked list stack and These will ha d when the lak