コード例 #1
0
ファイル: lightOJ__1082.c プロジェクト: sarker306/LightOJ
long initializeTree(long index, long *arr, node *tree, long start, long end){
    long mid, l, r;
    
    tree[index].left = start, tree[index].right = end;
    if ( start == end ) return tree[index].val = start;
    mid = (start + end)>>1;
    l = initializeTree( leftChild(index), arr, tree, start, mid );
    r = initializeTree( rightChild(index), arr, tree, mid + 1, end);
    return tree[index].val = minimumValue( arr, l, r );
}
コード例 #2
0
ファイル: main.c プロジェクト: Pridexs/nAryTree
int main()
{
	nAryTree tree;

	int root = 0;

	initializeTree(&tree, sizeof(int), &root);

	int infoChild = 1;
	add_child(&tree, &root, &infoChild, compare_int);

	infoChild = 2;
	add_child(&tree, &root, &infoChild, compare_int);

	infoChild = 3;
	add_child(&tree, &root, &infoChild, compare_int);
	
    root = 2;
    infoChild = 4;
    add_child(&tree, &root, &infoChild, compare_int);

	print_pre_order(&tree, print_integer);
    printf("\n");
    int nodeThatShallBeRemoved = 1;
	
	Node removed;
	
	remove_node(&tree,&nodeThatShallBeRemoved,&removed, compare_int);

    print_pre_order(&tree, print_integer);

	return 0;
}
コード例 #3
0
int main(void)
{
    initializeTree();
    while(1)
    {
        printf("1. Insert item. 2. Delete item. 3. Search item. \n");
        printf("4. Print height of tree. 5. Print height of an item. \n");
        printf("6. PrintInOrder. 7. Range Search.\n");

        int ch;
        scanf("%d",&ch);
        if(ch==1)
        {
            int item;
            scanf("%d", &item);
            insertItem(root, item);
        }
        else if(ch==2)
        {
            int item;
            scanf("%d", &item);
            deleteItem(root, item);
        }
        else if(ch==3)
        {
            int item;
            scanf("%d", &item);
            struct treeNode * res = searchItem(root, item);
            if(res!=0) printf("Found.\n");
            else printf("Not found.\n");
        }
        else if(ch==4)
        {
            int height = calcNodeHeight(root);
            printf("Height of tree = %d\n", height);
        }
        else if(ch==5)
        {
            int item;
            scanf("%d", &item);
            int height = calcHeight(item);
            printf("Height of %d = %d\n", item, height);
        }
        else if(ch==6)
        {
            int h = calcNodeHeight(root);
            printf("\n--------------------------------\n");
            printInOrder(root, h);
            printf("--------------------------------\n");
        }
        else if(ch==7)
        {
            int l,r;
            scanf("%d%d",&l,&r);
            printf("%d\n",rangeSearch(root,l,r));
        }
    }

}
コード例 #4
0
int AnalysisManager::initializeTrees(void)
{
    int entries = 0;
    for(std::map<std::string,TFile*>::iterator fileIt=inFilesList_.begin(); fileIt!=inFilesList_.end(); fileIt++)
        entries += initializeTree(fileIt->first);

    return entries;
}
コード例 #5
0
ファイル: main.c プロジェクト: joaopandolfi/redBlackTree
int main(int argc, char *argv[]){
	//Estruturas
	BuscaRetorno* r;
	Arvore* raiz;
	
	//Inicializacao da arvore
	resetActualTree();
	raiz = initializeTree();

	
	//Parametros
	char* nameEntrada = argv[1];
	char* nameBusca = argv[2];
	char* nameSaida = argv[3];

	//Arquivo
	FILE *arq;
	FILE *write;
 	char info[MAX_LENGHT_WORD];


// ==================== INSERINDO =========================
 
 	printf("Inserindo na arvore\n");
 	
	fopen_s(&arq,nameEntrada,"r");
	if(arq == NULL)
			printf("Erro, nao foi possivel abrir o arquivo\n");
	else
		while( (fgets(info, sizeof(info), arq))!=NULL )
			raiz = adiciona(raiz,novoNo(info));
	
	fclose(arq);
	//raiz = adiciona(raiz,novoNo("1"));
	
// ==================== BUSCANDO =========================
	
	printf("\nBUSCANDO\n");
	fopen_s(&arq,nameBusca,"r");
	if(arq == NULL)
			printf("Erro, nao foi possivel abrir o arquivo de leitura\n");
	else{
		fopen_s(&write,nameSaida,"w");
		if(arq == NULL)
			printf("Erro, nao foi possivel abrir o arquivo de escrita\n");
		else
			while( (fgets(info, sizeof(info), arq))!=NULL ){
				r = busca(raiz,info);
				info[strlen(info)-1] = '\0'; 
				if(encontrouNaBusca(r))
					fprintf(write,"%s presente %d\n",info,profDaBusca(r));
				else
					fprintf(write,"%s ausente %d\n",info,profDaBusca(r));
			}
	}
	fclose(arq);
	fclose(write);
}
コード例 #6
0
int deleteItem(struct treeNode * node, int item)
{
    struct treeNode *parent=0,*del=0;
    int type;
    if (node==0) return 0;
    if (root->item==item && root==node){
      parent=0;
      del=root;
    }
    if (node->left!=0 && node->left->item==item ){
        parent=node;
        del=node->left;
        type=0;
    }
    if (node->right!=0 && node->right->item==item){
        parent=node;
        del=node->right;
        type=1;
    }
    if (parent==0 && del==0){
        int t=deleteItem(node->left,item);
        if(t==FALSE_VALUE)t=deleteItem(node->right,item);
        return t;
    }
    else {
        if (del->left==0 && del->right==0){
            free(del);
            if(parent==0) initializeTree();
            else if(type==0) parent->left=0;
            else parent->right=0;
        }
        else if (del->left==0){
            if (parent==0) root=del->right;
            else if (type==0) parent->left=del->right;
            else parent->right=del->right;
            free(del);
        }
        else if (del->right==0){
            if (parent==0) root=del->left;
            else if (type==0) parent->left=del->left;
            else parent->right=del->left;
            free(del);
        }
        else{
            struct treeNode *scc;
            scc=findSuccessor(del,del->item);
            int x;
            x=del->item;
            del->item=scc->item;
            scc->item=x;
            deleteItem(root,scc->item);
        }
        return TRUE_VALUE;
    }

}
コード例 #7
0
ファイル: lightOJ__1082.c プロジェクト: sarker306/LightOJ
int main(){
    long i, n, q, x, y;
    int test, kase;
    
    scanf ("%d", &test);
    for ( kase = 1 ; kase <= test ; kase++ ){
        scanf("%ld%ld", &n, &q);
        for ( i = 0 ; i < n ; i++ ) scanf("%ld", &array[i]);
        initializeTree(0, array, tree, 0, n-1);
        printf("Case %d:\n", kase);
        while ( q-- ){
            scanf("%ld%ld", &x, &y);
            if ( x > y ) x ^= y ^= x ^= y;
            x--, y--;
            printf("%ld\n", array[query(0, array, tree, x, y)]);
        }
    }
    
    return 0;
}
コード例 #8
0
int main()
{
  char programName[] = "trees";

  int data;
  int chosenOperation;

  printf ( "Welcome to %s\n", programName );

  BinaryTree *theTree = NULL;
  initializeTree ( theTree );

  do
    {
      printf ( "%s", mainMenuString );
      chosenOperation = fetchINT ( stdin );
      switch ( chosenOperation )
        {
        case AddToTree:
          if ( isTreeFull ( *theTree ) )
            {
              printf ( "sorry the queue is full\n" );
            }
          else
            {
              printf ( "Enter a number: " );
              data = fetchINT ( stdin );
              addToTree ( theTree, data );
            }
          break;
        case 2:
          if ( isTreeEmpty ( *theTree ) )
            {
              printf ( "sorry the queue is empty\n" );
            }
          else
            {
              printf ( "The number is %d\n", takeFromTree ( theTree, data ) );
            }
          break;
        case 3:
          if ( isTreeEmpty ( *theTree ) )
            {
              printf ( "sorry the queue is empty\n" );
            }
          else
            {
              printTree ( theTree );
            }
          break;
        case 4:
          printf ( "bye\n" );
          break;
        default:
          printf ( "Oops Wrong input\n" );
          chosenOperation = AddToTree;
        }

    }
  while ( ! ( ( chosenOperation < AddToTree )
              || ( chosenOperation >= Quit ) ) );
  emptyTree ( theTree );
  free ( theTree );
  return EXIT_SUCCESS;
}
コード例 #9
0
int main(void)
{
    initializeTree();
    while(1)
    {
        printf("\n1. Insert item. 2. Delete item. 3. Search item. \n");
        printf("4. Print height of tree. 5. Print height of an item. \n");
        printf("6. PrintInOrder. 7. Calculate Depth 8. get MinItem. 9. get MaxItem.\n10. Range search. 11. Delete. 12. exit.\n");

        int ch;
        scanf("%d",&ch);
        if(ch==1)
        {
            int item;
            scanf("%d", &item);
            insertItem(root, item);
        }
        else if(ch==2)
        {
            int item;
            scanf("%d", &item);
            deleteItem(root, item);
        }
        else if(ch==3)
        {
            int item;
            scanf("%d", &item);
            struct treeNode * res = searchItem(root, item);
            if(res!=0) printf("Found.\n");
            else printf("Not found.\n");
        }
        else if(ch==4)
        {
            int height = calcNodeHeight(root);
            printf("Height of tree = %d\n", height);
        }
        else if(ch==5)
        {
            int item;
            scanf("%d", &item);
            int height = calcHeight(item);
            printf("Height of %d = %d\n", item, height);
        }
        else if(ch==6)
        {
            int h = calcNodeHeight(root);
            printf("\n--------------------------------\n");
            printInOrder(root, h);
            printf("--------------------------------\n");
        }
        else if(ch==12)
        {
            break;
        }
        else if(ch==7)
        {
            int i;
            scanf("%d",&i);
            printf("depth %d\n",calcDepth(i));
        }


        else if(ch==8)
        {
            printf("min item %d\n",getMinItem());
        }
        else if(ch==9)
        {
            printf("max item %d\n",getMaxItem());
        }
        else if(ch==10)
        {
            int item1,item2;
            scanf("%d%d", &item1,&item2);
            printf("Item number %d",rangeSearch(root,item1,item2));

        }
        else if(ch==11)
        {
            int a;
            scanf("%d",&a);
            deleteItem(root,a);
        }
    }

}
コード例 #10
0
int main(void)
{
    //freopen("in2.txt", "r", stdin);
    initializeTree();
    while(1)
    {
        //printMenu();
        int ch;
        scanf("%d",&ch);
        if(ch == 1)
        {
            int item;
            scanf("%d", &item);
            insertItem(root, item);
        }
        else if(ch == 2)
        {
            int item;
            scanf("%d", &item);
            deleteItem(root, item);
        }
        else if(ch == 3)
        {
            int item;
            scanf("%d", &item);
            struct treeNode * res = searchItem(root, item);
            if(res!=0) printf("Found.\n");
            else printf("Not found.\n");
        }
        else if(ch == 4)
        {
            int height = calcNodeHeight(root);
            printf("Height of tree = %d\n", height);
        }
        else if(ch == 5)
        {
            int item;
            scanf("%d", &item);
            int height = calcHeight(item);
            printf("Height of %d = %d\n", item, height);
        }
        else if(ch == 6)
        {
            int h = calcNodeHeight(root);
            printf("\n--------------------------------\n");
            printInOrder(root, h);
            printf("--------------------------------\n");
        }
        else if(ch == 7)
        {
            printf("%d\n", getSize(root));
        }
        else if(ch == 8)
        {
            int item;
            scanf("%d", &item);
            printf("%d\n", calcDepth(item));
        }
        else if(ch == 9)
        {
            printf("%d\n", calcNodeDepth(root));
        }
        else if(ch == 10)
        {
            if(root == 0) {
                printf("tree is empty\n");
                continue;
            }
            printf("%d\n", getMinItem());
        }
        else if(ch == 11)
        {
            if(root == 0) {
                printf("tree is empty\n");
                continue;
            }
            printf("%d\n", getMaxItem());
        }
        else if(ch == 12)
        {
            int left, right;
            scanf("%d %d", &left, &right);
            printf("%d\n", rangeSearch(root, left, right));
        }
        else if(ch == 13)
        {
            int item;
            scanf("%d", &item);
            //printf("Del : %d\n", item);
            //deleteItem(root, item);
            printf("%d\n", deleteItem(root, item));
        }
        else if(ch == 14)
        {
            break;
        }
    }

}
コード例 #11
0
ファイル: Symbols.cpp プロジェクト: yokwe/mesa-emulator
Symbols::Symbols(BCD* bcd_, int symbolBase_) : bcd(bcd_) {
	bcd             = bcd_;
	file            = bcd->file;

    symbolBase      = symbolBase_;
    offsetBase      = (symbolBase - ALTO_BIAS) * WORDS_PER_PAGE;

    file->position(offsetBase);

	versionIdent = file->getCARD16();
	if (versionIdent != VersionID) {
		logger.fatal("versionIdent %d", versionIdent);
		logger.fatal("symbolBase   %d", symbolBase);
		ERROR();
	}

	version       = Stamp::getInstance(bcd) ;
	creator       = Stamp::getInstance(bcd) ;
	sourceVersion = Stamp::getInstance(bcd) ;
	logger.info("version        %s", version->toString().toLocal8Bit().constData());
	logger.info("creator        %s", creator->toString().toLocal8Bit().constData());
	logger.info("source         %s", sourceVersion->toString().toLocal8Bit().constData());

    CARD16 word = file->getCARD16();
    definitionsFile = bitField(word, 15);
    logger.info("definitionFile %d", definitionsFile);

    directoryCtx    = CTXIndex::getInstance(this, bitField(word, 1, 15));
    logger.info("directoryCtx   %s", directoryCtx->toString().toLocal8Bit().constData());
    importCtx       = CTXIndex::getInstance(this, file->getCARD16());
    logger.info("importCtx      %s", importCtx->toString().toLocal8Bit().constData());
    outerCtx        = CTXIndex::getInstance(this, file->getCARD16());
    logger.info("outerCtx       %s", outerCtx->toString().toLocal8Bit().constData());


    hvBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("hvBlock        %s", hvBlock->toString().toLocal8Bit().constData());
    htBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("htBlock        %s", htBlock->toString().toLocal8Bit().constData());
    ssBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("ssBlock        %s", ssBlock->toString().toLocal8Bit().constData());
    outerPackBlock  = BlockDescriptor::getInstance(bcd);
//    logger.info("outerPackBlock %s", outerPackBlock->toString().toLocal8Bit().constData());
    innerPackBlock  = BlockDescriptor::getInstance(bcd);
//    logger.info("innerPackBlock %s", innerPackBlock->toString().toLocal8Bit().constData());
    constBlock      = BlockDescriptor::getInstance(bcd);
//    logger.info("constBlock     %s", constBlock->toString().toLocal8Bit().constData());
    seBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("seBlock        %s", seBlock->toString().toLocal8Bit().constData());
    ctxBlock        = BlockDescriptor::getInstance(bcd);
    logger.info("ctxBlock       %s", ctxBlock->toString().toLocal8Bit().constData());
    mdBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("mdBlock        %s", mdBlock->toString().toLocal8Bit().constData());
    bodyBlock       = BlockDescriptor::getInstance(bcd);
    logger.info("bodyBlock      %s", bodyBlock->toString().toLocal8Bit().constData());
    extBlock        = BlockDescriptor::getInstance(bcd);
//    logger.info("extBlock       %s", extBlock->toString().toLocal8Bit().constData());
    treeBlock       = BlockDescriptor::getInstance(bcd);
//    logger.info("treeBlock      %s", treeBlock->toString().toLocal8Bit().constData());
    litBlock        = BlockDescriptor::getInstance(bcd);
//    logger.info("litBlock       %s", litBlock->toString().toLocal8Bit().constData());
    sLitBlock       = BlockDescriptor::getInstance(bcd);
//    logger.info("sLitBlock      %s", sLitBlock->toString().toLocal8Bit().constData());
    epMapBlock      = BlockDescriptor::getInstance(bcd);
//    logger.info("epMapBlock     %s", epMapBlock->toString().toLocal8Bit().constData());
    spareBlock      = BlockDescriptor::getInstance(bcd);
//    logger.info("spareBlock     %s", spareBlock->toString().toLocal8Bit().constData());

    fgRelPgBase     = file->getCARD16();
//    logger.info("fgRelPgBase    %d", fgRelPgBase);
    fgPgCount       = file->getCARD16();
//    logger.info("fgPgCount      %d", fgPgCount);

    // Read block
    initializeSS(ssBlock);
    initializeHT(htBlock);
    initializeMD(mdBlock);
    initializeCTX(ctxBlock);
    initializeSE(seBlock);
    initializeBT(bodyBlock);
    initializeLT(litBlock);
    initializeExt(extBlock);
    initializeTree(treeBlock);

    BTIndex::checkAll();
    CTXIndex::checkAll();
    ExtIndex::checkAll();
    HTIndex::checkAll();
    LTIndex::checkAll();
    MDIndex::checkAll();
    SEIndex::checkAll();
    TreeIndex::checkAll();
};