-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHashTableSC.py
More file actions
executable file
·72 lines (61 loc) · 1.97 KB
/
HashTableSC.py
File metadata and controls
executable file
·72 lines (61 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env python
class HashTableSC(object):
class Node(object):
def __init__(self, v, n=None):
self.value = v
self.next = n
def __init__(self):
self.tableSize = 512
self.listArray = [None] * self.tableSize
def ComputeHash(self, key):
# division method
hashValue = key
return hashValue % self.tableSize
def resolverFun(self, i):
return i
def resolverFun2(self, i):
return i * i
def insert(self, value):
index = self.ComputeHash(value)
self.listArray[index] = self.Node(value, self.listArray[index])
def delete(self, value):
index = self.ComputeHash(value)
head = self.listArray[index]
if head != None and head.value == value:
self.listArray[index] = head.next
return True
while head != None:
nextNode = head.next
if nextNode != None and nextNode.value == value:
head.next = nextNode.next
return True
else:
head = nextNode
return False
def printHashTable(self):
i = 0
while i < self.tableSize:
print "Printing for index value :: " , i , "List of value printing :: "
head = self.listArray[i]
while head != None:
print head.value,
head = head.next
print ""
i += 1
def find(self, value):
index = self.ComputeHash(value)
head = self.listArray[index]
while head != None:
if head.value == value:
return True
head = head.next
return False
ht = HashTableSC()
i = 100
while i < 110:
ht.insert(i)
i += 1
print "search 100 :: " , ht.find(100)
print "remove 100 :: " , ht.delete(100)
print "search 100 :: " , ht.find(100)
print "remove 100 :: " , ht.delete(100)