from time import clock import sys class LinkedListNode: def __init__(self, inData, inNext): """Construct a new Linked List Node""" self.data = inData self.next = inNext def GetNextNode(self): return self.next def GetData(self): return self.data class LinkedList: def __init__(self,max): """Construct a new LinkedList. The first node and last node are the same. Size is 0""" self.firstNode = LinkedListNode(None, None) self.lastNode = self.firstNode self.size = 0 self.maxsize=max def Add(self, data): """Add a node to the list""" node = LinkedListNode(data, None) node.data = data; if self.size<=self.maxsize-1: if self.firstNode.data == None: self.firstNode = node self.lastNode = node else: self.lastNode.next = node self.lastNode = node self.size += 1 else: print "List is Overflowed" def Remove(self): if self.size>0: self.firstNode=self.firstNode.next self.size=self.size-1 else: print "UnderFlowed" def Add_many(self, list_of_data): """Add a list of nodes to the linked list""" for x in list_of_data: self.add(x) def GetLength(self): return self.size def Traverse(self): list=[] tnode=self.firstNode while tnode!=None: print tnode.data list.append(str(tnode.GetData())) tnode=tnode.GetNextNode() def Front(self): return self.firstNode def Rear(self): return self.lastNode def intersection(link1,link2): list=[] global compare global size while link1.firstNode!=None: save=link2.firstNode while link2.firstNode!=None: if link1.firstNode.data==link2.firstNode.data: compare=compare+1 list.append(link1.firstNode.data) link2.firstNode=link2.firstNode.GetNextNode() link1.firstNode=link1.firstNode.GetNextNode() link2.firstNode=save size=size+sys.getsizeof(link1)+sys.getsizeof(link2)+sys.getsizeof(list) return list def unique(list1): list=[] global compare global size for i in list1: flag=0 if list==[]: list.append(int(i)) else: for j in list: if int(i)==int(j): compare=compare+1 flag=1 break else: pass if flag==0: list.append(int(i)) size=size+sys.getsizeof(list)+sys.getsizeof(i)+sys.getsizeof(j)+sys.getsizeof(flag)+sys.getsizeof(list1) return list try: input=open('in13_10.txt','r+') output=open('out_33_13_10.txt','w') except IOError: print "The file does not exist" count=0 compare=0 size=0 for row in input: if count==0: n=int(row) elif count==1: list1=unique(row.split(",")) else: list2=unique(row.split(",")) count=count+1 start=clock() link1=LinkedList(n) link2=LinkedList(n) for i in list1: link1.Add(int(i)) for i in list2: link2.Add(int(i)) list=intersection(link1,link2) size=size+sys.getsizeof(link1)+sys.getsizeof(link2)+sys.getsizeof(list)+sys.getsizeof(list1)+sys.getsizeof(list2)+sys.getsizeof(count)+sys.getsizeof(compare) for i in list: output.write(str(i)) output.write("\nTotal No of comparisons Are: "+str(compare)) output.write("\nTime Consumed is: "+str(clock()-start)+" Secs") output.write("\nMemory Used is: "+str(size)+" Bytes") output.close()