No* concatenaLista(No *L1, No *L2) { No *aux1 = L1; No *aux2 = L2; No *L3 = criaLista(); while(aux1 != NULL) { L3 = insereOrdenado(L3, aux1->coef, aux1->exp); aux1 = aux1->prox; } while(aux2 != NULL) { L3 = insereOrdenado(L3, aux2->coef, aux2->exp); aux2 = aux2->prox; } return L3; }
/* Inicializacao do programa */ int main(){ Agenda *lista, *resp; lista = NULL; int tel_lido; char parametro; char nome_lido[TAM]; do{ parametro = getchar(); switch(parametro){ case('i'): /* Insere um novo contato na agenda */ getchar(); scanf("%d", &tel_lido); getchar(); scanf("%[^\n]", nome_lido); getchar(); insereOrdenado(tel_lido, nome_lido, &lista); break; case('r'): /* Faz a remocao de um contato da agenda */ getchar(); scanf("%[^\n]", nome_lido); getchar(); resp = busca(nome_lido, lista); if(resp == NULL) printf("Nao foi possivel remover: Contato inexistente!\n\n"); else printf("Contato: %-40s %d\nFoi removido com sucesso!\n\n", resp->nome, resp->tel); removeNo(nome_lido, &lista); break; case('n'): /* Busca um nome na agenda */ getchar(); scanf("%[^\n]", nome_lido); getchar(); resp = busca(nome_lido, lista); if(resp == NULL) printf("Contato nao encontrado!\n\n"); else printf("%-40s %d\n\n", resp->nome, resp->tel); break; case('p'): /* Faz a impressao de todos os contatos em ordem alfabetica */ if(lista != NULL) imprime(lista); break; } } while(parametro != 'f'); libera(lista); return 0; }
int main(){ No* L1,*L2,*L3; L1=criaLista(); L2=criaLista(); L3=criaLista(); L1=insereOrdenado(L1,2,2); L1=insereOrdenado(L1,1,1); L1=insereOrdenado(L1,3,3); L2=insereOrdenado(L2,1,1); L2=insereOrdenado(L2,1,2); L2=insereOrdenado(L2,1,3); imprimeLista(L1); printf("\n"); imprimeLista(L2); L3=somaPolinomio(L1,L2,L3); printf("\n"); imprimeLista(L3); return 0; }
int main(){ lista lst; initLista(&lst); insereInicio(&lst, 10); insereOrdenado(&lst, 1); imprimeLista(&lst); return 0; }
No* derivaPolinomio(No *P1) { No *aux = P1; No *P2 = criaLista(); //loop que realiza a multiplicação do coeficiente de P1 //por seu expoente e subtrai 1 de seu expoente //para todos os seus elementos while(aux!=NULL) { P2=insereOrdenado(P2, (aux->coef * aux->exp), (aux->exp - 1)); aux=aux->prox; } return P2; }
No* integraPolinomio(No *P1) { No *aux = P1; No *P2 = criaLista(); //loop que realiza a divisão do coeficiente de P1 //por seu expoente somado com 1 e soma 1 ao seu expoente //para todos os seus elementos while(aux!=NULL){ P2=insereOrdenado(P2, (aux->coef / (aux->exp + 1)), (aux->exp + 1)); aux=aux->prox; } //Faltando: inserir constante de integração return P2; }
No* subtraiPolinomio(No *P1, No *P2) { No *aux = P2; No* P2negativa = criaLista(); No* P3 = criaLista(); while(aux != NULL) {//loop que multiplica o polinômio P2 por -1 P2negativa = insereOrdenado(P2negativa, (aux->coef * (-1)), aux->exp); aux = aux->prox; } //analálogo ao soma polinômio P3 = concatenaLista(P1, P2negativa); simplificaPolinomio(P3); destroiLista(P2negativa); return P3; }
int main(){ int num, opcao; Lista l; inicLista(&l); opcao = 1; while(opcao <= 10 && opcao > 0){ printf("\n 1 - insere um numero no inicio da lista"); printf("\n 2 - insere um numero no fim da lista"); printf("\n 3 - insere um numero de maneira ordenada"); printf("\n 4 - verifica se a lista esta ordenada"); printf("\n 5 - ordena a lista"); printf("\n 6 - remove o elemento que esta no inicio da lista"); printf("\n 7 - remove o elemento que esta no fim da lista"); printf("\n 8 - remove um valor determinado"); printf("\n 9 - inverte"); printf("\n 10 - exibe a lista"); printf("\n qualquer outro numero para sair"); printf("\n\nEntre com uma das opcoes acima: "); scanf("%d", &opcao); switch (opcao){ case 1: printf("\n\nEntre com o numero a ser inserido: "); scanf("%d", &num); insereInicio(&l, num); break; case 2: printf("\n\nEntre com o numero a ser inserido: "); scanf("%d", &num); insereFim(&l, num); break; case 3: printf("\n\nEntre com o numero a ser inserido: "); scanf("%d", &num); insereOrdenado(&l, num); break; case 4: if (ordenada(&l)) printf("\nLista ordenada\n"); else printf("\nLista desordenada\n"); break; case 5: ordena(&l); break; case 6: if (removeInicio(&l, &num)) printf("\nNumero removido: %d\n", num); else printf("\nLista vazia"); break; case 7: if (removeFim(&l, &num)) printf("\nNumero removido: %d\n", num); else printf("\nLista vazia"); break; case 8: printf("\n\nEntre com o numero a ser removido: "); scanf("%d", &num); if (!removeValor(&l, num)) printf("Numero nao encontrado"); break; case 9: inverte(&l); break; case 10: exibe(&l); break; } exibe(&l); printf("\n\n"); } // libera(&l); return 0; }