Need help with my python thank you Consider the Node class below class Node: def
ID: 3752553 • Letter: N
Question
Need help with my python
thank you
Consider the Node class below class Node: def __init__(self, init_data): self.data-init_data self.next = None def get.data seLf): def get_next(self): def set_data(self, new_data): def set_next(self, new_next): def __str__(self): return self.data return self.next self, data new-data = self.next -new_next return self.datoa Using the Node class, provide an implementation of the Unordered List ADT as discussed in lectures. You will need to implement the following methods add remove) search Is_empty0 . size) . _str_0Explanation / Answer
Below is your code: -
class UnorderedList:
def __init__(self):
self.head = None
def isEmpty(self):
return self.head == None
def add(self,item):
temp = Node(item)
temp.set_Next(self.head)
self.head = temp
def size(self):
current = self.head
count = 0
while current != None:
count = count + 1
current = current.get_Next()
return count
def search(self,item):
current = self.head
found = False
while current != None and not found:
if current.get_Data() == item:
found = True
else:
current = current.get_Next()
return found
def remove(self,item):
current = self.head
previous = None
found = False
while not found:
if current.get_Data() == item:
found = True
else:
previous = current
current = current.get_Next()
if previous == None:
self.head = current.get_Next()
else:
previous.set_Next(current.get_Next())
def __str__(self):
list_str = "head"
current = self.head
while current != None:
list_str = list_str + "->" + str(current.get_Data())
current = current.get_Next()
list_str = list_str + "->" + str(None)
return list_str
def append(self, item):
"""add items into the linked from the other direction compared to add()"""
current = self.head
while current.get_Next() != None:
current = current.get_Next()
temp = Node(item)
temp.set_Next(current.get_Next())
current.set_Next(temp)
def getIndex(self, item):
"""get the index of an item, assume the first one (head pointing to) is 0"""
index = 0
current = self.head
found = False
while current != None:
if current.get_Data() == item:
found = True
break
else:
current = current.get_Next()
index += 1
if not found:
index = None
return index
def getItem(self, index):
"""return an item given an index"""
current = self.head
for i in range(index):
current = current.get_Next()
if current != None:
return current.get_Data()
else:
raise("index out of range")
def pop(self, index):
self.remove(self.getItem(index))
def insert(self, index, item):
"""insert an item after index item"""
current = self.head
for i in range(index):
current = current.get_Next()
if current != None:
temp = Node(item)
temp.set_Next(current.get_Next())
current.set_Next(temp)
else:
raise("index out of range")
def pop(self, index=None):
if index is None:
index = self.size()-1
if index > self.size()-1:
raise IndexError('List Index Out Of Range')
current = self.head
previous = None
found = False
if current:
count = 0
while current.get_Next() is not None and not found:
if count == index:
found = True
else:
previous = current
current = current.get_Next()
count += 1
if previous is None:
self.head = current.get_Next()
if current.get_Next() is None:
self.tail = current.get_Next()
else:
self.tail = previous
previous.set_Next(current.get_Next())
count -= 1
return current.get_Data()
class Node:
def __init__(self,initdata):
self.data = initdata
self.next = None
def get_Data(self):
return self.data
def get_Next(self):
return self.next
def set_Data(self,newdata):
self.data = newdata
def set_Next(self,newnext):
self.next = newnext
def __str__(self):
return self.data
alist = UnorderedList()
alist.add(30)
alist.add(31)
alist.add(27)
alist.append(100)
alist.append(101)
print (alist)
print (alist.getIndex(27))
print (alist.getItem(4))
alist.pop(4)
print (alist)
alist.insert(1, 5)
print (alist)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.