Exemplo n.º 1
0
/* delete val from the node */
int delValFromNode(int val, struct btreeNode *myNode) {
      int pos, flag = 0;
      if (myNode) {
              if (val < myNode->val[1]) {
                      pos = 0;
                      flag = 0;
              } else {
                      for (pos = myNode->count;
                              (val < myNode->val[pos] && pos > 1); pos--);
                       if (val == myNode->val[pos]) {
                              flag = 1;
                      } else {
                              flag = 0;
                      }
              }
              if (flag) {
                      if (myNode->link[pos - 1]) {
                              copySuccessor(myNode, pos);
                              flag = delValFromNode(myNode->val[pos], myNode->link[pos]);
                              if (flag == 0) {
                                      printf("Given data is not present in B-Tree\n");
                              }
                      } else {
                              removeVal(myNode, pos);
                      }
              } else {
                      flag = delValFromNode(val, myNode->link[pos]);
              }
              if (myNode->link[pos]) {
                      if (myNode->link[pos]->count < MIN)
                              adjustNode(myNode, pos);
              }
      }
      return flag;
}
Exemplo n.º 2
0
int delValFromNode(long long int val, struct btreeNode *myNode) {
      int pos, flag = 0;
      if (myNode) {
              if (val < myNode->val[1]) {
                      pos = 0;
                      flag = 0;
              } else {
                      for (pos = myNode->count;
                              (val < myNode->val[pos] && pos > 1); pos--);
                       if (val == myNode->val[pos]) {
                              flag = 1;
                      } else {
                              flag = 0;
                      }
              }
              if (flag) {
                      if (myNode->link[pos - 1]) {
                              copySuccessor(myNode, pos);
                              flag = delValFromNode(myNode->val[pos], myNode->link[pos]);
                              if (flag == 0) {
                                      printf("Dado não encontrado na árvore\n");
                              }
                      } else {
                              removeVal(myNode, pos);
                      }
              } else {
                      flag = delValFromNode(val, myNode->link[pos]);
              }
              if (myNode->link[pos]) {
                      if (myNode->link[pos]->count < MIN)
                              adjustNode(myNode, pos);
              }
      }
      return flag;
}
Exemplo n.º 3
0
bool containsNearbyDuplicate(int* nums, int numsSize, int k) {

if(numsSize < 2)
{
    return false;
}
struct Set set;

initSet(&set, numsSize);
for(int i = 0; i < numsSize; ++i)
{

    if(i>k)
    {
        removeVal(&set,nums[i-k-1]);
    }
    if(!addValue(&set, nums[i]))
    {
        releaseSet(&set);
        return true;
    }

}
releaseSet(&set);

return false;
}