University of Arizona, Department of Computer Science

CSc 120: Finding an element in a linked list

Expected Behavior

Given a LinkedList object llist, the execution of the code

llist.find(item)
should return True if item is equal to one of value attributes in the linked list llist and False otherwise.

The code for the LinkedList class is as follows:

class Node:
    def __init__(self, value):
        self._value = value
        self._next = None
    
    # getter for the _value attribute
    def value(self):
        return self._value
    
    # getter for the _next attribute
    def next(self):
        return self._next
        
    def __str__(self):
        return str(self._value) + "; "
    
class LinkedList:
    def __init__(self):
        self._head = None

    # add a node to the head of the list
    def add(self, node):
        node._next = self._head
        self._head = node
        
    def __str__(self):
        string = 'List[ '
        curr_node = self._head
        while curr_node != None:
            string += str(curr_node)
            curr_node = curr_node.next()
        string += ']'
        return string

Examples

  1. Code:
    ll = LinkedList()
    ll.add(Node(1))
    ll.add(Node(3))
    ll.add(Node(2))
    return ll.find(2)
    Result: True
  2. Code:
    ll = LinkedList()
    ll.add(Node(20))
    return ll.find(40)
    Result:False
  3. Code:
    ll = LinkedList()
    return ll.find(40)
    Result:False
  4. Code:
    ll = LinkedList()
    ll = LinkedList()
    ll.add(Node("hello"))
    ll.add(Node("there"))
    ll.add(Node("cs120"))
    return ll.find("cs120")
    Result:True
  5. Code:
    ll = LinkedList()
    ll.add(Node(-8))
    ll.add(Node(4))
    ll.add(Node(4))
    return ll.find(4)
    Result:True