数据结构代写 | CS261 Data Structures Assignment 3

本次美国代写主要为数据结构的代码修改assignment

CS261 Data Structures
Assignment 3
Your Very Own Linked List and Binary Search Practice

Part 1 – Summary and Specific Instructions
1. Implement Deque and Bag ADT interfaces with a Singly Linked List data structure by
completing the skeleton code provided in the file sll.py. Once completed, your
implementation will include the following methods:
add_front(), add_back()
insert_at_index()
remove_front(), remove_back()
remove_at_index()
get_front(), get_back()
remove()
count()
slice()
2. We will test your implementation with different types of objects, not just integers.
We guarantee that all such objects will have correct implementations of methods
__eq__, __lt__, __gt__, __ge__, __le__, and __str__.
3. The number of objects stored in the list at any given time will be between 0 and 900
inclusive.
4. Variables in the SLNode and LinkedList classes are not marked as private. For this
portion of the assignment, you are allowed to access and change their values
directly. You are not required to write getter or setter methods for them.
5. RESTRICTIONS: You are not allowed to use ANY built-in Python data structures or
their methods. All implementations in this part of the assignment must be
done recursively. You are not allowed to use while- or for- loops in this part
of the assignment.
6. This implementation must be done with the use of front and back sentinel nodes.

add_front(self, value: object) -> None:
This method adds a new node at the beginning of the list (right after the front sentinel).
Example #1:
lst = LinkedList()
print(lst)
lst.add_front(‘A’)
lst.add_front(‘B’)
lst.add_front(‘C’)
print(lst)
Output:
SLL[]
SLL[C -> B -> A]
add_back(self, value: object) -> None:
This method adds a new node at the end of the list (right before the back sentinel).
Example #1:
lst = LinkedList()
print(lst)
lst.add_back(‘C’)
lst.add_back(‘B’)
lst.add_back(‘A’)
print(lst)
Output:
SLL[]
SLL[C -> B -> A]

insert_at_index(self, index: int, value: object) -> None:
This method adds a new value at the specified index position in the linked list. Index 0
refers to the beginning of the list (right after the front sentinel).
If the provided index is invalid, the method raises a custom “SLLException”. Code for the
exception is provided in the skeleton file. If the linked list contains N nodes (not including
sentinel nodes in this count), valid indices for this method are [0, N] inclusive.
Example #1:
lst = LinkedList()
test_cases = [(0, ‘A’), (0, ‘B’), (1, ‘C’), (3, ‘D’), (-1, ‘E’), (5, ‘F’)]
for index, value in test_cases:
print(‘Insert of’, value, ‘at’, index, ‘: ‘, end=”)
try:
lst.insert_at_index(index, value)
print(lst)
except Exception as e:
print(type(e))
Output:
Insert of A at 0 : SLL [A]
Insert of B at 0 : SLL [B -> A]
Insert of C at 1 : SLL [B -> C -> A]
Insert of D at 3 : SLL [B -> C -> A -> D]
Insert of E at -1 : <class ‘__main__.SLLException’>
Insert of F at 5 : <class ‘__main__.SLLException’>