Rebuild the Map ADTs structure given below with the Linked list method. Include the remove, add, contains, len, show and iter methods. Please use the python language. class Map: def __init__(self):...


Rebuild the  Map ADTs structure given below with the Linked list method. Include the remove, add, contains, len, show and iter methods. Please use the python language.


class Map:
def __init__(self):
self._entryList = list()#empty list initialization


def __len__(self):
return len(self._entryList)


def __contains__(self, key):
ndx = self._findPosition(key)
return ndx is not None


#adds a new entry, or replace value if exists
def add(self, key, value):
ndx = self._findPosition(key)
if ndx is not None: #key found
self._entryList[ndx].value = value
return False
else:
entry = _MapEntry(key,value)
self._entryList.append(entry)
return True


def valueOf(self, key):#what value this key holds
ndx = self._findPosition(key)
assert ndx is not None, "Invalid map key"
return self._entryList[ndx].value


def remove(self, key):
ndx = self._findPosition(key)
assert ndx is not None, "Invalid map key"
self._entryList.pop(ndx)


def __iter__(self):
return _MapIterator(self._entryList)


#helper method - so private
def _findPosition(self, key):
for i in range(len(self)):
if self._entryList[i].key == key:
return i
else:
return None #check if key in ith element, returns None otherwise


class _MapEntry:
def __init__(self, key, value):
self.key = key
self.value = value


class _MapIterator:
def __init__(self, entryList):
self._entryList = entryList
self._index = 0


def __iter__(self):
return self


def __next__(self):
if self._index <>
element = self._entryList[self._index]
self._index += 1
return element
else:
raise StopIteration

Jun 09, 2022
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here