#!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Data Structures>> # Release 3.0 # chengang882 @ 2016-12-21 # Completed implementation of a Unordered List ADT class Node(object): def __init__(self, init_data): self.data = init_data self.next = None def get_data(self): return self.data def get_next(self): return self.next def set_data(self, new_data): self.data = new_data def set_next(self, new_next): self.next = new_next class UnorderedList(object): def __init__(self): self.head = None def is_empty(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 += 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 show(self): pass if __name__ == "__main__": ul = UnorderedList() print(ul.is_empty()) ul.add(45) ul.add(78) ul.add("adfd") ul.add("4345") ul.add(3) print(ul.is_empty()) print(ul.size()) print(ul.search(45)) print(ul.remove(78)) print(ul)
>>> True False 5 True None <__main__.UnorderedList object at 0x0000000002F1C860> >>>