File tree Expand file tree Collapse file tree 2 files changed +105
-0
lines changed
short_phone_interview_problems Expand file tree Collapse file tree 2 files changed +105
-0
lines changed Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python
2+
3+ __author__ = "bt3"
4+
5+
6+ class HashTable (object ):
7+ def __init__ (self , slots = 10 ):
8+ self .slots = slots
9+ self .table = []
10+ self .create_table ()
11+
12+ # Get the slot
13+ def hash_key (self , value ):
14+ return hash (value )% self .slots
15+
16+ # When creating the table, add list struct
17+ # to each slot
18+ def create_table (self ):
19+ for i in range (self .slots ):
20+ self .table .append ([])
21+
22+ # Method to add a item in the right slot
23+ def add_item (self , value ):
24+ key = self .hash_key (value )
25+ self .table [key ].append (value )
26+
27+ # Aux: print table
28+ def print_table (self ):
29+ for key in range (self .slots ):
30+ print "Key is {0}, value is {1}." .format (key , self .table [key ])
31+
32+ # Aux: find item
33+ def find_item (self , item ):
34+ item_hash = self .hash_key (item )
35+ return item in self .table [item_hash ]
36+
37+
38+ if __name__ == '__main__' :
39+ dic = HashTable (5 )
40+ for i in range (1 , 40 , 2 ):
41+ dic .add_item (i )
42+
43+ dic .print_table ()
44+ assert (dic .find_item (20 ) == False )
45+ assert (dic .find_item (21 ) == True )
Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python
2+
3+ __author__ = "bt3"
4+
5+
6+ class Node (object ):
7+ def __init__ (self , value , next = None ):
8+ self .value = value
9+ self .next = next
10+
11+
12+ class LinkedList (object ):
13+ def __init__ (self ):
14+ self .head = None
15+
16+ def _add (self , value ):
17+ self .head = Node (value , self .head )
18+
19+ def _printList (self ):
20+ node = self .head
21+ while node :
22+ print node .value
23+ node = node .next
24+
25+ def _find (self , index ):
26+ prev = None
27+ node = self .head
28+ i = 0
29+ while node and i < index :
30+ prev = node
31+ node = node .next
32+ i += 1
33+ return node , prev , i
34+
35+ def _delete (self , prev , node ):
36+ if not prev :
37+ self .head = node .next
38+ else :
39+ prev .next = node .next
40+
41+ def deleteNode (self , index ):
42+ node , prev , i = self ._find (index )
43+ if index == i :
44+ self ._delete (prev , node )
45+ else :
46+ print ('Node with index {} not found' .format (index ))
47+
48+
49+
50+ if __name__ == '__main__' :
51+ ll = LinkedList ()
52+ for i in range (1 , 5 ):
53+ ll ._add (i )
54+
55+ print ('The list is:' )
56+ ll ._printList ()
57+
58+ print ('The list after deleting node with index 2:' )
59+ ll .deleteNode (2 )
60+ ll ._printList ()
You can’t perform that action at this time.
0 commit comments