int main () {
	struct no * lista = NULL;  //inicializacao da lista: lista vazia
   	int opcao, elem;

	do {
		printf ("\n 1-inserir inicio  2-inserir final");
		printf ("\n 3-remover inicio  4-remover final");
		printf ("\n 5-imprimir lista  0-sair : ");
		scanf ("%d", &opcao);
		switch (opcao) {
			case 1:	printf ( "\n***Inserindo no inicio da lista***");
					printf ("\nValor a ser inserido: ");
					scanf ("%d", &elem);
					inserir_inicio (elem, &lista);
					imprimir (lista);
					break;
			case 2:	printf ( "\n***Inserindo no final da lista***");
					printf ("\nValor a ser inserido: ");
					scanf ("%d", &elem);
					inserir_final (elem, &lista);
					imprimir (lista);
					break;		
			case 3:	printf ( "\n***Removendo do inicio da lista***");
			      	if (lista != NULL) {
                   		elem = remover_inicio (&lista);
					  	printf ("\nValor removido: %d ", elem);
                 	}
                 	else
						printf ("\nLista Vazia!");
					imprimir (lista);
					break;
			case 4:	printf ( "\n***Removendo do final da lista***");
			      	if (lista != NULL) {
                  		elem = remover_final (&lista);
					   	printf ("\nValor removido: %d ", elem);
                 	}
                 	else
						printf ("\nLista Vazia!");
					imprimir (lista);
					break;
			case 5:	imprimir (lista);
					break;
			case 0:	printf ("\nSaindo....");
  	              	break;
			default: printf ("\nOpcao Invalida!");
		}
	} while (opcao != 0);

	system ("pause");
  	return (0);
}
Exemple #2
0
int main(int argc, char *argv[]){
	
	FILE *arquivo1, *arquivo2;
	Parvore arvore;
	PLista lista, lista2, lista3, p, z, y;

	char carac_text, carac_dicio;
	char word[2000000];
	char word_text[2000000];
	char other_word[2000000];
	int i = 0, tam = 0, j = 0, lines = 1, k;

	inicializaArvore(&arvore);
	inicializaLista(&lista);
	inicializaLista(&lista2);
	inicializaLista(&lista3);

	arquivo1 = fopen(argv[1], "r");
	arquivo2 = fopen(argv[2], "r");


	//PEGANDO TODAS AS PALAVRAS DO DICIONARIO E INSERINDO NA ARVORE TRIE
	while((carac_dicio = fgetc(arquivo1)) != EOF){

		if(carac_dicio != '\n'){
			word[i] = carac_dicio;
			i++;
		}
		else{
			word[i] = '\0';
			i = 0;
			inserir_palavra(&arvore, strlen(word), word);
		}
	}


	//LENDO E TRATANDO TODOS OS CARACTERES DO ARQUIVO2
	while((carac_text = fgetc(arquivo2)) != EOF)
		tam++;

	//criando string com todo o conteudo do texto
	char string[tam];
	rewind(arquivo2);
	i = 0;
	while((carac_text = fgetc(arquivo2)) != EOF){
		string[i] = carac_text;
		i++;
	}
	string[i] = '\0'; //o texto todo esta nessa string
	i = 0;

	for(j = 0; j < tam; j++){

		if((seekChar(separadores,string[j])) && (i == 0)){
			//j++;
			continue;
		}
		if(seekChar(separadores, string[j])){

			word_text[i] = '\0';
			strcpy(other_word,word_text);
			i = 0;

			for(k = 0; k < strlen(word_text); k++)
				word_text[k] = tolower(word_text[k]);

			if(buscar_palavra(arvore, word_text) == 1){
				inserir_crescente(&lista, word_text);
			}
			else{
				inserir_final(&lista2, other_word);
			}
		}
		else{
			word_text[i] = string[j];
			i++;
		}
	}

	i = 0;
	for(p = lista; (p != NULL); p = p->prox){
		int aux = 1;
		int number;

		printf("%s", p->palavra);
		for(j = 0; j < tam; j++){

			if(seekChar(separadores, string[j])){
				word_text[i] = '\0';
				i = 0;

				for(k = 0; k < strlen(word_text); k++)
					word_text[k] = tolower(word_text[k]);

				if((strcmp(word_text,p->palavra)) == 0){

					if (lines != number){
						if(aux == 1){
								printf(" %d", lines);
								number = lines;

						}
						else{
								printf(", %d", lines);
								number = lines;

						}
					aux = 0;
					}
				}

				if(string[j] == '\n'){
					lines++;
					number = lines-1;
				}

			}
			else{
				word_text[i] = string[j];
				i++;
			}
		}
		printf("\n");
		lines = 1;
	}
	//imprimir(lista2);
	for(z = lista2; (z != NULL); z = z->prox){
		printf("%s ", z->palavra);
		//for(y = lista3; (y != NULL); y = y->prox){
			buscarMenor(arvore, z->palavra);
			printf("%s\n", menorpalavra);
			menorpalavra[0] = '\0';
			menor = 100;

	}
}