Advertisement
Guest User

Untitled

a guest
Sep 9th, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "treeSet.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6.  
  7.  
  8. struct TreeSet * createTreeSet() {
  9.     struct TreeSet * newTreeSet=(struct TreeSet *) calloc(1,sizeof(struct TreeSet));
  10.     if(newTreeSet == NULL) {
  11.         fprinttf(stderr,"\n Nu s a putut aloca memorie pentru TreeSet!\n");
  12.     }
  13.     return newTreeSet;
  14. }        
  15.      
  16.    
  17.  
  18.  
  19. unsigned treeSetSize(struct TreeSet * set){
  20.     return set->size;
  21. }    
  22.  
  23.  
  24. char treeSetIsEmpty(struct TreeSet * set){
  25.     if(set->size == 0) {
  26.         return 1;
  27.     }else{
  28.           return 0;
  29.           }
  30. }                  
  31.  
  32.  
  33.  
  34. void treeSetPut(struct TreeSet * set, struct Server server) {
  35.  
  36.     if(treeSetIsEmpty(set)) {
  37.         struct TreeNode * newNode = (struct TreeNode *) malloc(sizeof(struct TreeNode));
  38.         newNode->value=server;
  39.         newNode->parent=newNode->left=newNode->right=NULL;
  40.         set->root=newNode;
  41.         set->size++;
  42.         return;
  43.    }
  44.    struct TreeNode * tmpNode = set->root;
  45.    while(1) {
  46.        
  47.        if(compare(tmpNode->value,server) == 0) {
  48.            return;
  49.        }
  50.        if((compare(tmpNode->value,server) > 0) && (tmpNode->left != NULL)) {
  51.           tmpNode=tmpNode->left;
  52.        }
  53.        if((compare(tmpNode->value,server) > 0) && (tmpNode->left == NULL)) {
  54.           struct TreeNode * newNode = (struct TreeNode *) malloc(sizeof(struct TreeNode));
  55.            newNode->value = server;
  56.            newNode->parent = tmpNode;
  57.            tmpNode->left = newNode;
  58.            newNode->left=newNode->right=NULL;
  59.            set->size++;
  60.            return;
  61.        }
  62.        if((compare(tmpNode->value,server) < 0)  && (tmpNode->right == NULL)) {
  63.            struct TreeNode * newNode = (struct TreeNode *) malloc(sizeof(struct TreeNode));
  64.            newNode->value = server;
  65.            newNode->parent = tmpNode;
  66.            tmpNode->right = newNode;
  67.            newNode->right = newNode->left = NULL;
  68.            set->size++;
  69.            return;
  70.        }
  71.        if((compare(tmpNode->value,server) < 0) && (tmpNode->right != NULL)) {
  72.            tmpNode = tmpNode->right;
  73.        }
  74.        
  75.     }
  76. }                    
  77.            
  78. char treeSetContains(struct TreeSet * set, struct Server server) {
  79.  
  80.     struct TreeNode * tmpNode = set->root;
  81.     while(1) {
  82.         if(compare(tmpNode->value,server) == 0) {
  83.             return;
  84.         }  
  85.         if(compare(tmpNode->value,server) > 0) {  
  86.             tmpNode = tmpNode->left;
  87.         }
  88.         if(compare(tmpNode->value,server) < 0) {
  89.            tmpNode = tmpNode->right;
  90.         }
  91.     }
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement