# Case Study - Set Implement ###### tags: `Class` `OOP` `DSA` ## Case1: Implemented by linked-list > [name=Jason Lin] ```python= class node: def __init__(self,n=None): self.__next=None self.__value=n def setVal(self,n): self.__value=n def setNext(self,nextnode): self.__next=nextnode def getVal(self): return self.__value def getNext(self): return self.__next class myset: def __init__(self): self.__count=0 self.__head=node() def len(self): return self.__count def ist(self,n): if self.mem(n): return False if self.__count==0: self.__head.setVal(n) else: nod = node(n) nod.setNext(self.__head) self.__head=nod self.__count+=1 return True def dlt(self,n): if not self.mem(n): return False self.__count-=1 nod=self.__head if nod.getVal()==n: self.__head=nod.getNext() return True while nod.getNext()!=None: if nod.getNext().getVal()==n: nod.setNext(nod.getNext().getNext()) return True nod=nod.getNext() def mem(self,n): nod=self.__head while nod!=None: if nod.getVal()==n: return True nod=nod.getNext() return False def max(self): maxVal=float('-inf') nod=self.__head while nod.getNext()!=None: if nod.getVal()>maxVal: maxVal=nod.getVal() nod=nod.getNext() return maxVal #unit test if __name__=='__main__': mineset=myset() print('len=',mineset.len()) mineset.ist(3) mineset.ist(0) mineset.ist(3) mineset.ist(0) mineset.ist(2) mineset.ist(6) print('max=',mineset.max()) print('len=',mineset.len()) print('is 30 in?',mineset.mem(30)) print('is 3 in?',mineset.mem(3)) mineset.dlt(3) print('is 3 in?',mineset.mem(3)) mineset.dlt(6) print('max=',mineset.max()) print('len=',mineset.len()) ```