Edit the sortlist function and return a list that is sorted, please also finish
ID: 3825462 • Letter: E
Question
Edit the sortlist function and return a list that is sorted, please also finish the isSorted function(Please write in Python only)
import random
class Link (object):
def __init__(self, data = None):
self.data = data
self.next = None
def get_next(self):
return self.next
def set_next(self, n):
self.next = n
def get_data(self):
return self.data
def set_data(self, d):
self.data = d
def __str__(self):
return str(self.data)
class LinkedList(object):
def __init__(self, r = None):
self.root = r
self.size = 0
def getNumLinks(self):
return self.size
def addFirst(self, data):
link = Link(data)
link.next = self.root
self.root = link
self.size += 1
def addLast(self, data):
if self.root == None:
self.addFirst(data)
return
else:
link = Link(data)
temp = self.root
while(temp.next):
temp = temp.next
temp.next = link
self.size += 1
def addInOrder(self, data):
if self.root is None:
data.next = self.root
self.root = data
elif self.root.data >= data.data:
data.next = self.root
self.root = data
else:
current = self.root
while(current.next is not None and current.next.data < data.data):
current = current.next
data.next = current.next
current.next = data
self.size += 1
def findUnordered(self, data):
this = self.root
while this.next:
if this.data == data:
return True
else:
this = this.get_next()
return None
def findOrdered(self, data):
this = self.root
while this.next:
if this.data == data:
return True
else:
this = this.get_next()
return None
def delete(self, data):
de = self.root
prev = None
while de.next:
if de.data == data:
if prev:
prev.set_next(de.get_next())
else:
self.root = de
self.size -= 1
return "Deleted Data"
else:
prev_node = de
de = de.get_next()
return "Could not delete data"
def __str__(self):
if self.root == None:
return "List is empty"
temp = self.root
out = str(temp.data) + " "
while(temp.next):
temp = temp.next
out += str(temp.data) + " "
return out
def copyList(self):
empty = LinkedList()
current = self.root
while current.next != None:
empty.addLast(current.data)
current = current.next
empty = str(empty) + str(current.data)
return empty
def reverseList(self):
prev = None
current = self.root
while current != None:
next = current.next
current.next = prev
prev = current
current = next
self.root = prev
def sortList(self):
prev = self.root
current = prev.get_next()
temp = current. get_next()
stop = False
while current != None:
if current.get_data() > temp.get_data():
prev.set_next(temp)
temp.set_next(current)
current.set_next(temp.get_next())
prev = current
current = temp
temp = temp.get_next()
else:
previous = current
current = temp
temp = temp.get_next()
def isSorted(self):
def main():
lis1 = LinkedList()
for i in range(12):
new = random.randint(1, 99)
lis1.addFirst(new)
print(lis1)
print()
main()
Explanation / Answer
//just you have to add last line. Rest all are correct in this defination
def sortList(self):
prev = self.root
current = prev.get_next()
temp = current. get_next()
stop = False
while current != None:
if current.get_data() > temp.get_data():
prev.set_next(temp)
temp.set_next(current)
current.set_next(temp.get_next())
prev = current
current = temp
temp = temp.get_next()
else:
previous = current
current = temp
temp = temp.get_next()
return self.current
#Inorder to check if the list is sorted belwo ITER function in define which return node value.
def __iter__(self):
p = self.head
while p:
yield p.data
p = p.next
//Define isSorted function
def isSorted(self):
iter1 = iter(linked_list)
iter2 = iter(linked_list)
next(iter2, None) # drop the first element in iter2.
return all(i1 <= i2 for i1, i2 in zip(iter1, iter2))
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.