Checking in update to hashtable code...
authorbdemsky <bdemsky>
Fri, 27 Feb 2004 05:52:04 +0000 (05:52 +0000)
committerbdemsky <bdemsky>
Fri, 27 Feb 2004 05:52:04 +0000 (05:52 +0000)
Repair/RepairCompiler/MCC/SimpleHash.cc
Repair/RepairCompiler/MCC/ex_test.cc

index 0512046e65b1b44b5b44edfd1e36f016ce0e8ee3..ed8401d83fe4e5e23a7d38783d37cf081607cd3e 100755 (executable)
@@ -185,8 +185,10 @@ int SimpleHash::remove(int key, int data) {
     
     LinkedHashNode **ptr = &bucket[hashkey];
 
-    /* check that this key/object pair isn't already here */
-    // TBD can be optimized for set v. relation */
+    for (int i = 0; i < numchildren; i++) {
+      children[i]->remove(key, data);
+    }
+
     while (*ptr) {
         if ((*ptr)->key == key && (*ptr)->data == data) {
          LinkedHashNode *toremove=*ptr;
@@ -197,13 +199,11 @@ int SimpleHash::remove(int key, int data) {
            toremove->lnext->lprev=toremove->lprev;
          delete toremove;
          numelements--;
-         for (int i = 0; i < numparents; i++) {
-           parents[i]->add(key, data);
-         }
          return 1;
         }
         ptr = &((*ptr)->next);
     }
+
     return 0;
 }
 
index c13eae6ae12fa7d1f93fc76cc617752df09297b0..9b0ab1e5128e1e810bea2d600779ff8f86702ea9 100755 (executable)
@@ -7,11 +7,16 @@ struct Node {
 };
 
 int main(int argc, char **argv) {
-  struct Node * head =0;//(struct Node *) malloc(sizeof (struct Node));
-  //  head->next=0;
-  //head->prev=0;
-
-#include "ex.cc"
+  struct Node * head =(struct Node *) malloc(sizeof (struct Node));
+  for(int i=0;i<300;i++) {
+    struct Node * tmp =(struct Node *) malloc(sizeof (struct Node));
+    tmp->next=head;
+    head->prev=tmp;
+    head=tmp;
+  }
   
+  for(int j=0;j<6000;j++) {
+#include "ex.cc"
+  }
   
 }