int main(){
	
	LISTA lista;
	inicializar(&lista);

	inserir(4, &lista);
	inserir(6, &lista);
	inserir(2, &lista);
	inserir(3, &lista);
	inserir(1, &lista);
	inserir(5, &lista);

	mostrarLista(lista);

	excluir(2, &lista);
	excluir(4, &lista);
	excluir(6, &lista);

	mostrarLista(lista);

	// Exemplo de busca na lista
	PONT aux;
	int valor = 2;
	if( buscaSequencial(valor, lista, &aux) != NULL )
		printf("Valor %d encontrado.\n", valor );
	else
		printf("Valor %d não encontrado.\n", valor);

	return 0;
}
예제 #2
0
파일: main.c 프로젝트: marcogorak/C
//Método Main()
int main()
{
    char opcao='0';
    while(opcao!='4')
    {
     menu();
     opcao=getchar();
     fflush(stdin);
     
     // Valida a opção digitada após a chamada do método menu()
     switch(opcao)
     {
      case'1':insere();
      break;
      case'2':excluir();
      break;
      case'3':imprime();
        getchar();
      break;
      case'4':printf("\nFim de Execucao");

      getchar();
      exit(1);
      default:
      break;
     }
    }
}
no* excluir(no *T, int x){
    no *p;

    if(T == NULL){
        return NULL;
    }else if(x > T->dado){// Insere na sub arvore correta
        T->direito = excluir(T->direito, x);

        if(difAlturaEsq_e_Dir(T) == 2){
            if(difAlturaEsq_e_Dir(T->esquerdo) >= 0)
                T = balanc2Esquerda(T);
            else
                T = balancEsquerdaDireita(T);
        }
    }else if(x < T->dado){
        T->esquerdo = excluir(T->esquerdo, x);

        if(difAlturaEsq_e_Dir(T) == -2){//'deslize' os dados para rebalancear
            if(difAlturaEsq_e_Dir(T->direito) <= 0)
                T = balanc2Direita(T);
            else
                T = balancDireitaEsquerda(T);
        }
    }else{//Dado deve ser excluido se encontrado
        if(T->direito != NULL){//exclua o seu sucessor direto
            p = T->direito;

            while(p->esquerdo!= NULL)
                p = p->esquerdo;
                T->dado = p->dado;
                T->direito = excluir(T->direito, p->dado);

                if(difAlturaEsq_e_Dir(T) == 2){//'deslize' os dados para rebalancear
                    if(difAlturaEsq_e_Dir(T->esquerdo) >= 0)
                        T = balanc2Esquerda(T);
                    else
                        T = balancEsquerdaDireita(T);
                }
        }else
            return(T->esquerdo);
    }
    T->altura=altura(T);

    return(T);
}
예제 #4
0
// Funções
void main()
{
  int op1;

  do
  {
    // Menu
    op1 = menu();
    switch(op1)
    {
      // 1. Cadastrar
      case 1: cadastrar();
              break;

      // 2. Alterar
      case 2: alterar();
              break;

      // 3. Excluir
      case 3: excluir();
              break;

      // 4. Pesquisar
      case 4: pesquisar();
              break;

      // 5. Carregar banco de dados
      case 5: carregar();
              break;

      // 6. Salvar banco de dados
      case 6: salvar();
              break;

      // 7. Limpar banco de dados
      case 7: limpar();
              break;

      // 8. Sair
      case 8: printf("\n\n\tAte mais!\n");
      		  getch();
              break;

      // Outros
      default: printf("\n\n\tDigite uma opcao valida!\n\t[Pressione qualquer tecla para continuar...]\n");
      	      getch();
               break;
    }
  }
  while (op1!=8);
int main(void){
    no *raiz = NULL;
    int dadosDosElementos, nElementos, i, opcao;

    do{
        printf("\nArvores AVL"
               "\n1.Criar:"
               "\n2.Inserir no:"
               "\n3.Excluir no:"
               "\n4.Mostrar encaminhamentos:"
               "\n5.Sair:"
               "\nInforme sua escolha: ");
        scanf("%d", &opcao);
        switch(opcao){
            case 1:
                printf("\nInforme a qtd de elementos que deseja inserir: ");
                scanf("%d",&nElementos);
                printf("\nInforme os dados dos nos da arvore:\n");
                raiz = NULL;
                for(i = 0; i < nElementos; i++){
                    scanf("%d", &dadosDosElementos);
                    raiz = insercao(raiz, dadosDosElementos);
                }
                break;
            case 2:
                printf("\nInforme um dado para o novo no: ");
                scanf("%d", &dadosDosElementos);
                raiz = insercao(raiz, dadosDosElementos);
                break;
            case 3:
                printf("\nInforme um dado para o novo no: ");
                scanf("%d", &dadosDosElementos);
                raiz = excluir(raiz, dadosDosElementos);
                break;
            case 4:
                printf("\nSequencia em pre-ordem:\n");
                preOrdem(raiz);
                printf("\n\nSequencia em ordem:\n");
                emOrdem(raiz);
                printf("\n\nSequencia em pos-ordem\n");
                posOrdem(raiz);
                printf("\n");
                break;
        }
    }while(opcao != 5);

    return 0;
}
예제 #6
0
// ------------------------------------------------------------------------------
// Funcao main
// ------------------------------------------------------------------------------
int main() {

tree * figueira;
int escolha;
figueira = init();
	
	for ( ; ; ){
		escolha = menu();
		switch(escolha){
			
			case 1:inserir(figueira);
			break; 
			case 2: excluir(figueira);
			break; 
			case 3: pesquisar(figueira);
			break;
			case 4: h(figueira);	
			break;
			case 5: { 
					printf("\n");
					printf("5. Em ordem\n");
					printf("------------------------\n");
						em_ordem(figueira, figueira->raiz);
						printf("\n");
			}
			break;
			case 6: {
					printf("\n");
					printf("6. Pre ordem\n");
					printf("------------------------\n");
						pre_ordem(figueira, figueira->raiz);
						printf("\n");
			}
			break;
			case 7: {
					printf("\n");
					printf("7. Pos ordem\n");
					printf("------------------------\n");
						pos_ordem(figueira, figueira->raiz);
						printf("\n");
				}
			break;
			case 8: exit(0);
			break;
		}
	}
}
예제 #7
0
int menuCrud(int opcE){
    int opcO,    //var que recebe a oopc do menu crud
        bolinho = 0; //var de controle pra voltar ao menu de ent
    //aqui vai o menu crud
    printf("Insira  a operacao desejada:\n");
        printf("\t1 - Inserir\n\t2 - Excluir\n\t3 - Atualizar\n\t4 - Buscar\n\t\t\t\t -1 - VOLTAR\n\t: ");
        scanf("%d", &opcO);
        getchar();
        //fflush(stdin);

    switch(opcO){
        case 1:
            inserir(opcE);
            break;
        case 2:
            excluir(opcE);
            break;
        
        case 3:
            atualizar(opcE);
            break;
            
        case 4:
            buscar(opcE);
            break;
            
        case -1:
            bolinho = 1;
            printf("Bolinho com mostarda\n");
            break;
        default:
            printf("Opção invalida!");
            break;
    }
    system("clear");
    if(bolinho == 1){
        return 1;
    }else{
        menuCrud(opcE);
    }

    return 0;
}
int main()
{
  Aluno meuAluno;
  Turma minhaTurma;
  int resultado,opcao,m;
  Aluno *pAluno;

  // Iniciar com a lista vazia
  
  minhaTurma.pPrimeiraCelula = NULL;
  
  // Menu principal

  do
  {
    system("cls");
    printf("\n");
    printf(" CADASTRO DE ALUNOS\n");
    printf("\n");
    printf(" 1 - INCLUIR UM NOVO ALUNO\n");
    printf(" 2 - EXIBIR LISTA\n");
    printf(" 3 - PESQUISAR ALUNO\n");
    printf(" 4 - EXCLUIR ALUNO\n");
    printf(" 5 - SAIR DO PROGRAMA\n");
    printf("\n");
    printf("OPCAO DESEJADA: "); scanf("%d",&opcao);
    
    // 1 - INSERIR NOVO ALUNO
    
    if (opcao == 1)
    {
      system("cls");
      printf("\nINCLUIR NOVO ALUNO\n\n");
      printf("Matricula: "); scanf("%d",&(meuAluno.matricula));
      printf("Nome:      "); scanf("%s",meuAluno.nome);
      printf("C.R.:      "); scanf("%f",&(meuAluno.cr));

      resultado = inserir(&minhaTurma,&meuAluno);

      if (resultado==0) printf("\n\nInclusao bem sucedida\n\n");
      if (resultado==1) printf("\n\nErro 1: Lista cheia\n\n");
      if (resultado==2) printf("\n\nErro 2: Matricula Duplicada\n\n");
    }
    
    // 2 - EXIBIR LISTA

    if (opcao == 2)
    {
      listar(&minhaTurma);
    }

    // 3 - PESQUISAR ALUNO


    if (opcao == 3)
    {
      //system("cls");
      printf("\nPESQUISAR ALUNO\n\n");
      printf("Matricula: "); scanf("%d",&m);
      pAluno = recuperar(&minhaTurma,m);

      if (pAluno)
      {
         printf("\nNome = %s\n",pAluno->nome);
         printf(  "C.R. = %4.1f\n\n",pAluno->cr);
      }
      else
      {
        printf("\n\n ERRO: Aluno nao encontrado\n\n");
      }
    }

    // 4 - EXCLUIR ALUNO


    if (opcao == 4)
    {
      //system("cls");
      printf("\nEXCLUIR ALUNO\n\n");
      printf("Matricula: "); scanf("%d",&m);
      resultado = excluir(&minhaTurma,m);

      if (resultado==0) printf("\n\nExclusao bem sucedida.\n\n");
      if (resultado==1) printf("\n\nAluno nao encontrado.\n\n");
      if (resultado==2) printf("\n\nLista vazia.\n\n");
    }

    //system("pause");
  }
  while (opcao != 5);


  return 0;
}
예제 #9
0
파일: agenda.c 프로젝트: buribu/sources
int main(void)
{
   AGENDA * pAgenda;

   int iEntradas, op;
   iEntradas=0;

   pAgenda = (AGENDA *) malloc(sizeof(AGENDA)); /* alocando espaco para a posicao 0
	                                           do vetor */
   if( pAgenda == NULL )
   {
      printf("\nErro de alocacao de memoria.");
      exit(1);
   }

   do
   {
      fflush(stdin);
      printf("\n1 - Inclusao");
      printf("\n2 - Alteracao");
      printf("\n3 - Consulta");
      printf("\n4 - Excluir");
      printf("\n5 - Pesquisar");
      printf("\n9 - Sair");
      printf("\nEntre com uma opcao -> ");
      scanf("%d", &op);

      if( op == 1 )
      {
         /* farei aqui para ilustrar algumas formas de manipular ponteiros */
         fflush(stdin);

         /* alocacao de ponteiros em funcoes requer trabalhar com ponteiros
            para ponteiros */
         aloca(&pAgenda, &iEntradas);

         printf("*** Inclusao ***");
         printf("\nEntre com o Nome:");
         /* forma 1 - endereco ponteiro inicial + x posicoes na memoria
		      quando se trabalhar com o endereco, deve-se usar -> */
         gets((pAgenda+iEntradas)->nome);
         fflush(stdin);

         printf("Entre com o email:");
         /* forma 2 - endereco ponteiro inicial + x posicoes na memoria
                      quando se trabalhar com ponteiro (conte?do do endereco ou *),
                      deve-se usar o . (ponto) */
         gets((*(pAgenda+iEntradas)).email);
         fflush(stdin);

         printf("Entre com o telefone:");
         /* forma 3 - trabalhando como vetor */
         scanf("%d", &pAgenda[iEntradas].telefone);
         fflush(stdin);

         iEntradas++;
      }
      else if( op == 2)
      {
         alterar(pAgenda, iEntradas);
      }
      else if( op == 3 )
      {
         /* se o vetor de estruturas vai ser somente lido
	    nao eh preciso passar ponteiro para ponteiro */
         ordena(pAgenda, iEntradas);
         consulta(pAgenda, iEntradas);
      }
      else if( op == 4)
      {
         ordena(pAgenda, iEntradas);
         excluir(&pAgenda, &iEntradas);
      }
      else if( op == 5)
      {
         ordena(pAgenda, iEntradas);
         pesquisar(pAgenda,iEntradas);
      }
   } while(op!=9);
}
예제 #10
0
void test_exclui(void){
   excluir(1);
   CU_ASSERT_EQUAL(buscar(1),0);
}