Beispiel #1
0
	NoAVL<T>* inserir(const T& dado, NoAVL<T>* arv) {
		if (!arv) {
			return new NoAVL(dado);
		}

		if (dado < *arv->dado) {
			arv->esquerda = inserir(dado, arv->esquerda);
		} else {
			arv->direita = inserir(dado, arv->direita);
		}

		arv->atualizaAltura();

		int balanceamento = fatorDeBalanceamento(arv);

		if (balanceamento > 1) {
			if (dado > *arv->esquerda->dado) {
				arv->esquerda = rotacaoSimplesEsq(arv->esquerda);
			}

			return rotacaoSimplesDir(arv);
		}

		if (balanceamento < -1) {
			if (dado < *arv->direita->dado) {
				arv->direita = rotacaoSimplesDir(arv->direita);
			}

			return rotacaoSimplesEsq(arv);
		}

		return arv;
	}
Beispiel #2
0
int main(void){
	ME matriz, matriz2, matriz3, matriz4;
	no *q;
	define(&matriz,3,3);
	define(&matriz2,3,3);
	define(&matriz3,3,3);
	define(&matriz4,3,3);

	inserir(&matriz,2,2,5);
	inserir(&matriz,3,3,8);
	inserir(&matriz2,1,1,3);
	inserir(&matriz2,2,2,3);

	printmatriz(&matriz,3,3);
	printf("\n");
	printmatriz(&matriz2,3,3);

	somamatriz(&matriz,&matriz2,&matriz3);
	printf("\n");
	//q=buscaparametro(&matriz2,1,1);
	//printf("%d ",q->valor);
	printmatriz(&matriz3,3,3);
	printf("\n");
	multiplicaSenhor(&matriz,&matriz2,&matriz4);
	printmatriz(&matriz4,3,3);
	return 0;
}
void EventosInputTexto::processarEvento(const SDL_Event& evento)
{
	switch(evento.type)
	{
	case SDL_TEXTINPUT:
		{
		#if UNI_PLATAFORMA_ANDROID
		    inserir(evento.text.text);
		#else
			std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
			std::wstring ws = converter.from_bytes(evento.text.text);

			std::string s;
			for(unsigned int i = 0; i < ws.size(); ++i)
				s.push_back((char)ws[i]);

			inserir(s);
		#endif
		}
		break;

	case SDL_TEXTEDITING:
		// Faz nada. Estou tratando edicao de texto de outra maneira.
		break;
	}
}
Beispiel #4
0
int main() {
    LISTA_ENCADEADA minha_lista;
    minha_lista.cont = 0;
    minha_lista.primeiro = NULL;
    minha_lista.ultimo = NULL;
    
    // Uma maneira de se fazer: instancie diretamente a struct e passe seu endereco
    
    ELEMENTO aluno1;
    aluno1.DRE = 111;
    aluno1.CRA = 8.5;
    strcpy(aluno1.nome, "Aluno1");
    inserir(&minha_lista, &aluno1, NULL);
    
    // Outra maneira: crie o ponteiro e aloque memória para ele, 
    // passando depois o proprio ponteiro
    
    ELEMENTO* aluno2_ptr;
    aluno2_ptr = (ELEMENTO*) malloc(sizeof(ELEMENTO));    
    aluno2_ptr->DRE = 222;
    aluno2_ptr->CRA = 6;
    strcpy(aluno2_ptr->nome, "Aluno2");
    inserir(&minha_lista, aluno2_ptr, &aluno1);    
    
    
    print_lista(&minha_lista);

    printf("\n");
    return 1;
}
Beispiel #5
0
	int main(){
		char modelo;
		int ano;
		Lista lista;
		
		//cria a lista vazia
		CriarLista(&lista);
		
		//Incluindo Elementos na lista
		//modelo="fiat";
		ano = 1990;
		inserir(modelo,ano,1,&lista);
		printf("\nlista qtd: %d\n", lista.qtd);
		
		//Incluindo Elementos na lista
		//modelo="fiat";
		ano = 2010;
		inserir(modelo,ano,2,&lista);
		printf("\nlista qtd: %d\n", lista.qtd);
		
		
		//Incluindo Elementos na lista
		//modelo="fiat";
		ano = 2015;
		inserir(modelo,ano,3,&lista);
		printf("\nlista qtd: %d\n", lista.qtd);
		
		printf("\n imprimindo lista: \n");
		imprimeLista(lista);
	
	system("pause");
		
		
	}
Beispiel #6
0
void popular(Arvore* arvore){   
    inserir(arvore, 15); //raiz
    inserir(arvore, 13); 
    inserir(arvore, 20);      
    inserir(arvore, 19); 
    inserir(arvore, 31);
}
	NoAVL<T>* inserir(const T& dado, NoAVL<T>* arv) {
		if (dado <= *arv->dado) {
			arv->esquerda =
					(arv->esquerda) ?
							inserir(dado, arv->esquerda) : new NoAVL<T>(dado);

		} else {
			arv->direita =
					arv->direita ?
							inserir(dado, arv->direita) : new NoAVL<T>(dado);
		};

		arv->altura = DefinirAltura(arv);

		switch (definirTipoGira(arv)) {
		case tpGiroDireita: {
			if ((FatorFilhoGiroDireita(arv)) < 0)
				arv->esquerda = girar(arv->esquerda, false);
			arv = girar(arv, true);
			break;
		}
		case tpGiroEsquerda:
			if ((FatorFilhoGiroEsquerda(arv)) > 0)
				arv->direita = girar(arv->direita, true);
			arv = girar(arv, false);
			break;
		default:
			break;
		}

		return arv;
	}
Beispiel #8
0
int main(){
  inserir(&lista,3);
  inserir(&lista,4);
  inserir(&lista,5);
  imprimir(lista);
  system("PAUSE");
  imprimirOrdemDigitacao(lista);
  system("PAUSE");
	return 0;
}
Beispiel #9
0
void main(){
    char assasino[10], assasinado[10];
    ARVORE* Arv;
    Arv = inicializa(Arv);
    while(scanf("%s %s",assasino,assasinado)!=EOF){
        Arv->raiz = inserir(Arv, assasino, Arv->raiz, Arv->raiz,1);
        Arv->raiz = inserir(Arv, assasinado, Arv->raiz, Arv->raiz,0);
    }
    printf("HALL OF MURDERERS\n");
    exibirEmOrdem(Arv->raiz);
}
Beispiel #10
0
No* inserir(ARVORE* arv, char chave[], No *no, No *anterior, int assa){
    No *esq,*dir,*aux; //Ponteiros de Nós que auxiliam substituições futuras
    if(no==NULL){//no que olhamos é nulo;
        no= (No *)malloc(sizeof(No));
        strcpy(no->chave,chave);
        no->pEsquerda = NULL;
        no->pDireita = NULL;
        no->pai = anterior;
        no->mortos=0;
        no->balanceamento=0;
        if(assa==0)
            no->situacao=0;
        else{
            no->situacao=1;
            no->mortos=1;
        }
        return (no);
    }
    if(strcmp(chave,no->chave)<0){// indica que o valor a ser inserido é menor que o atual
        no->pEsquerda = inserir(arv, chave, no->pEsquerda, no, assa);
        if(fatorBalanceamento_NO(no)>=2){
            if(strcmp(chave,no->pEsquerda->chave)<0){
                no=rotacaoLL(no);
            }
            else if(strcmp(chave,no->pEsquerda->chave)>0){
                no=rotacaoLR(no);
            }
        }
    }
    else if(strcmp(chave,no->chave)>0){//indica que o valor a ser inserido é maior que o atual
        no->pDireita = inserir(arv, chave, no->pDireita, no, assa);

        if(fatorBalanceamento_NO(no)>=2){
            if(strcmp(chave,no->pDireita->chave)>0){
                no=rotacaoRR(no);
            }
            else if(strcmp(chave,no->pDireita->chave)<0){
                no=rotacaoRL(no);
            }
        }
    }
    else{//indica que temos a chave com mesmo valor do no
        if(assa==1){
            no->mortos+=1;
        }
        else
            no->situacao=0;
    }
    no->balanceamento=maior(alt_NO(no->pEsquerda),alt_NO(no->pDireita))+1;
    return(no);
}
Beispiel #11
0
int main(int argc, char *argv[])
{
    struct tLdde *lista = criaLista();
    int escolha, qtde, remChave;
    struct tItem *itRem;
    char resp;
    
    do
    {
        escolha = menu();
        switch(escolha)
        {
            case 1: inserir(lista, criaItem());
                    break;
            case 2: system("cls");
                    printf("Informe o valor da chave a ser removida: ");
                    scanf("%d", &remChave);
                    itRem = remover(lista, remChave);
                    if(itRem != NULL)
                    {
                        printf("\nItem chave [%d] localizado. Deseja realmente exclui-lo. [S]im [N]ao: ", remChave);
                        do
                        {
                            resp = getche();
                        }while(toupper(resp) != 'S' && toupper(resp) != 'N');
                        if(toupper(resp) == 'S')
                        {
                            free(itRem);
                            printf("\nItem chave [%d] removido com sucesso...\n", remChave);
                        }
                        else
                        {
                            inserir(lista, itRem);
                            printf("\nRemocao do item chave [%d] abortada...\n", remChave);
                        }
                        system("pause");
                    }
                    else
                    {
                        printf("O item chave [%d] nao estah na lista...\n", remChave);
                        system("pause");
                    }
                    break;
            case 3: qtde = mostrar(lista->primeiro);
                    printf("\nA lista possui %d itens...\n", qtde);
                    system("pause");
        }
    }while(escolha != 4);
    printf("Saindo...\n");
    system("pause");
}
Beispiel #12
0
void inserir(no **raiz, int elemento) {
    if(*raiz == NULL) {									//faz a verificação se o espaço nao contem elementos da arvore
        *raiz = (no *)malloc(sizeof(no));				//aloca espaço para uma nova struct
        (*raiz)-> chave = elemento;						//define a chave dessa struct igual ao elemento de entrada
        (*raiz)-> dir = NULL;							//aterra o lado direito da nova folha
        (*raiz)-> esq = NULL;							//aterra o lado esquerdo da nova folha
    }
    if(elemento < (*raiz)->chave) {						//verifica se o elemento de entrada é menor que o numero chave atual
        inserir(&(*raiz)->esq, elemento);				//executa novamente a função com o endereço esquerdo como raiz
    }
    if(elemento > (*raiz)->chave) {						//verifica se o elemento de entrada é maior que o numero chave atual
        inserir(&(*raiz)->dir, elemento);				//executa novamente a função com o endereço direito como raiz
    }
}
Beispiel #13
0
template <class C, class I> void ABC<C, I>::inserir(C pclau, I pinfo, Node **node, int paltura) {
	if(*node == NULL) {
		*node = new Node(pclau, pinfo);
		numelements++;

		if(alturaarbre<paltura) alturaarbre=paltura;
	}
	else if(pclau > (*node)->clau) inserir(pclau, pinfo, &(*node)->fdre, paltura+1);
	else if(pclau < (*node)->clau) inserir(pclau, pinfo, &(*node)->fesq, paltura+1);
	else {
		(*node)->clau = pclau;
		(*node)->info = pinfo;
	}
}
Beispiel #14
0
AVL inserirAVL(AVL t, void* data, int* cresceu, int(*comp)(void*,void*)){
	if (t==NULL) {
		t = (AVL)malloc(sizeof(struct nodo));
		t->data = data;
		t->filho[ESQ] = t->filho[DIR] = NULL;
		t->factor_balanceamento = EQUAL;
		*cresceu = 1;
	}
    else if (comp(data,t->data)>0)
        t = inserir(t,DIR,data,cresceu,comp);
    else
        t = inserir(t,ESQ,data,cresceu,comp);
  return t;
}
Beispiel #15
0
//Soma dois conjuntos.
conjunto * somar(conjunto * ca, conjunto * cb) {
	conjunto * c = NULL;
	
	while (ca != NULL) {//insere todos os elementos de ca em c
		c = inserir(c, ca->numero);
		ca = ca->prox;
	}
	
	while (cb != NULL) {//insere todos os elementos de cb em c
		c = inserir(c, cb->numero);
		cb = cb->prox;
	}
		
	return c;
}
Beispiel #16
0
Arvore* inserir(Arvore* arvore, int valor){  
    if (estaVazia(arvore)){
        arvore->raiz = inserirNo(valor);
    }else{
        if(arvore->raiz->valor < valor){
            arvore->raiz = arvore->raiz->sad;
            inserir(arvore, valor);
        }
        else if (arvore->raiz->valor > valor){
            arvore->raiz = arvore->raiz->sae;
            inserir(arvore, valor);
        }
    }
    return arvore;
}
void inserir (no **raiz, int k){//função que insere novos nós na árvore
	if(*raiz == NULL){
		no *aux = (no *)malloc(sizeof(no)); //cria uma variável auxiliar com alocação dinÂmica de memória
		aux->chave = k;
		aux->dir=aux->esq=NULL;
		*raiz = aux;
		return;
	}
	if((*raiz)->chave > k){        //usando recursão fazemos com que o nó, se maior que o elemento analisado á para a direita 
		inserir(&(*raiz)->esq, k);//e se for menor para a esquerda
	}
	if((*raiz)->chave<k){
		inserir(&(*raiz)->dir, k);
	}
}
Beispiel #18
0
main(){
	PEDIDO zero = {"Acapulco", 01, 100};
	PEDIDO um = {"Bruxelas", 02, 200};
	PEDIDO dois = {"Cairo", 03, 300};
	TFila fila;
	fila.inicio = fila.fim = 0;
	fila.contador = 0;
	inserir (&fila, zero);
	inserir (&fila, um);
	inserir (&fila, dois);
	mostra(fila);
	retirar (&fila);
	mostra(fila);

}
int inserir(int key,tree** t){
    tree* tmp = *t;
    if(tmp==NULL){
        *t = criar_tree();
        tmp = *t;
        tmp->id = key;
        tmp->left = tmp->rigth = NULL;
        return 1;
    }else if(key < tmp->id){
        inserir(key,&tmp->left);
    }else if(key > tmp->id){
        inserir(key,&tmp->rigth);
    }
    return 0;
}
Beispiel #20
0
void produtor(int *id) {
    double x = 0;
    while(1) {
        x += 1 + *id;
        inserir(x);
    }
}
int main(int argc, char** argv) {
        RubroNegra arvore;
        arvore = novaRubroNegra();

        int chave;
        char operacao;
        void* resultadoBusca;

        while (operacao != 'q') {
                usage();
                operacao = getchar();
                getchar();
                switch (operacao) {
                case 'i':
                        scanf("%d", &chave);
                        printf("Inserindo chave: [%d].\n", chave);
                        if (inserir(arvore, chave, (void*) chave)) printf("Chave [%d] já existe.\n", chave);
                        else
                                printf("Chave [%d] inserida.\n", chave);
                        getchar();

                        break;
                case 'r':
                        scanf("%d", &chave);
                        printf("Removendo chave: [%d].\n", chave);
                        if (remover(arvore, chave)) printf("Chave [%d] não encontrada.\n", chave);
                        else
                                printf("Chave [%d] removida.\n", chave);
                        getchar();
                        break;
                case 'b':
                        scanf("%d", &chave);
                        printf("Buscando chave: [%d].\n", chave);
                        resultadoBusca = buscar(arvore, chave);
                        if (resultadoBusca == NULL) printf("Chave [%d] não encontrada.\n", chave);
                        else
                                printf("Resultado da busca: [%d].\n", (int) resultadoBusca);

                        getchar();
                        break;
                case 'p':
                        printf("Imprimindo árvore.\n");
                        imprimir(arvore);

                        break;
                case 'd':
                        printf("Destruindo árvore.\n");
                        destruir(arvore);
                        printf("Árvore destruída.\n");
                        break;
                default:
                        usage();
                        break;
                }

        }

        return 0;

}
Beispiel #22
0
void inserirstats(int year,int numautores,int coautores){
    Stats a;
    a=NULL;
    a=estatisticas;
    a=inserir(year,a,numautores,coautores);
    estatisticas=a;
}
//----------------------------Implementaçãp da Main-----------------------------
int main ()
{
    int q, quantumDoProcessador;
    char identificador[9];
    TNo *escalonador = NULL;
    FILE *arq;

    arq = fopen("processos.txt", "r");

    if (!arq)
    {
        printf("Falha na abertura do arquivo 'processos.txt'\n\n");
        exit(0);
    }

    fscanf(arq, "%i", &quantumDoProcessador);

    //chama as funções que irão preencher a fila enquanto houverem dados
    while(fscanf(arq, "%s %i", identificador, &q)==2 && inserir(&escalonador, q, identificador));

    printf("Quantum do processador = %i\n", quantumDoProcessador);
    exibir (escalonador);

    escalonarProcessos(&escalonador, quantumDoProcessador);
}
Beispiel #24
0
int main()
{
    struct Arvore *t = criaArvore();
    int num;
    char c[5];

    gets(c);

    while(scanf("%d", &num) != EOF)
        inserir(t, criaNo(&num));

    if(strcmp(c, "POS") == 0)
        posOrdem(t->raiz);

    else if(strcmp(c, "PRE") == 0)
        preOrdem(t->raiz);

    else
        inOrdem(t->raiz);

    printf("%d", altura(t->raiz));
    
    printf(" %d", rotacao);
    
}
void main(void)
{
  struct dado info[5];
  char op;
  do {
    clrscr();
    printf("MENU PRINCIPAL\n");
    printf("--------------\n");
    printf("1. Inserir dados\n");
    printf("2. Visualizar dados\n");
    printf("3. Ler arquivo\n");
    printf("4. Gravar arquivo\n");
    printf("5. Sair\n");
    op=getch();
    if (op=='1') {
      inserir(info);
    } else if (op=='2') {
      exibir(info);
    } else if (op=='3') {
      clrscr();
      if (abrir(info)) {
	printf("Arquivo aberto com sucesso!");
      }
      getch();
    } else if (op=='4') {
      clrscr();
      if (salvar(info)) {
	printf("Arquivo salvo com sucesso!");
      }
      getch();
    }
  } while (op!='5');

}
int main(){		//função principal.

	char escolha;	

	inicialista();	//inicia a lista struct notas.
	printf("\n\n\n");

for(;;){
	escolha = menu();     //área do MENU.
	switch(escolha){
		case 1:
			inserir();
			break;
		case 2:
			salvar();
			break;
		case 3:
			mostra();
			break;
		case 4:	
			carregar();
			break;
		case 5:
			exit(0);
	}
	}

printf("\n\n");
return 0;
//system("pause");

}
Beispiel #27
0
Arv* inserir(Arv* raiz, int elem)
{
   if (raiz == NULL)
   {
      return arv_cria(elem,NULL,NULL);
   }
   else
   {
      if(elem < raiz->elem)
          raiz->esq = inserir(raiz->esq, elem);
      else
          raiz->dir = inserir(raiz->dir, elem);
   }
   return raiz;

}
main()
{
	int op;
	
	parq = fopen("dados.dat", "rb+"); // binário leitura e escrita
	if (parq == NULL)
		parq = fopen("dados.dat", "wb+"); // cria
		
	do
	{
		system("cls");
		printf("Cadastro\n\n\n");
		printf("1 - Inserir dados...\n\n");
		printf("2 - Listar dados...\n\n");
		printf("0 - Sair");
		printf("\n\nEscolha: ");
		scanf("%d", &op);
		
		switch (op)
		{
			case 1:
				inserir();
				break;
				
			case 2:
				listar();
				break;
		}
	}
	while (op != 0);	
	
	fclose(parq);
}
int main(){
    tree* arv=NULL;
    int a=4,x;
    x = inserir(a,&arv);
    x=inserir(5,&arv);
    x=inserir(3,&arv);
    remover(3,arv);
    printf("R = %i\n",arv->id);
    printf("Busca = %i\n",busca(a,arv));
    printf("RD = %i\n",arv->rigth->id);
    printf("RE = %i\n",arv->left->id);
    free(arv);
     system("pause");
    return 0;
    
}
Beispiel #30
0
int main(){

    int size_g, size_edg, source, target, cost;
    scanf("%d%d", &size_g, &size_edg);
    if(size_g < 1 || size_edg < 1)
        return -1;

    heap *root = heapCreateRoot();
    vertex *vertices = (vertex*)calloc(size_g, sizeof(vertex));
    edge **inv = (edge**)calloc(size_g, sizeof(edge*));
    initGraph(vertices, size_g);

    vertices[0].heap_node.key = 0;

    heapInsert(root, &(vertices[0].heap_node));

    while(scanf("%d%d%d", &source, &target, &cost) != EOF) {
        inserir(vertices, inv, root, size_g, source, target, cost);
    }

    g_print_graph(vertices, size_g);

    freeGraph(vertices, size_g);
    freeInv(inv, size_g);
    free(vertices);
    free(inv);
    free(root);
    return 0;
}