Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct tipoNo ptLSE;
- struct tipoNo{
- int numero;
- ptLSE *prox;
- };
- ptLSE *insere(ptLSE *ptLista, int n)
- {
- int n_elementos=0;//variável auxiliar que realiza a contagem do número de elementos
- ptLSE *novo;//novo elemento
- ptLSE *ant;//ponteiro auxiliar para o elemento anterior.
- ptLSE *ptaux;
- ptaux=ptLista;
- novo=(ptLSE*)malloc(sizeof(ptLSE));//alocação de um novo nodo.
- novo->numero=n;
- while (ptaux->prox!=NULL)
- {
- ant = ptaux;
- ptaux = ptaux->prox;
- n_elementos=n_elementos+1;
- }
- /*encaeia o elemento*/
- if (ant == NULL) /*o anterior não existe, insere na primeira posição*/
- {
- novo->prox = ptLista;
- ptLista = novo;
- }
- else /*elemento inserido na posição de acordo com seu sinal e paridade.*/
- {
- if(n>0)//testa se o número é positivo.
- {
- if(n%2==0)//caso no qual o número é positivo e par.
- {//insere o elemento no início da lista.
- novo->prox = ptLista;
- ptLista = novo;
- }
- else//caso no qual o número é positivo e ímpar.
- {//insere o elemento no fim da lista.
- novo->prox=NULL;
- ptaux->prox=novo;
- }
- }
- else//caso em que o número é negativo.
- {//insere o elemento no meio da lista.
- ant=NULL;
- ptaux=ptLista;
- if(n_elementos%2==0)//caso no qual o número de elementos é par.
- {
- n_elementos=n_elementos/2;
- }
- else
- {
- n_elementos=n_elementos-1;
- n_elementos=n_elementos/2;
- }
- while(n_elementos=!0)//procura o elemento do meio
- {
- ant=ptaux;
- ptaux=ptaux->prox;
- n_elementos=n_elementos-1;
- }
- novo->prox=ptaux;//realiza a inserção do elemento
- ant->prox=novo;
- }
- }
- return ptLista;
- }
- ptLSE *destroi(ptLSE *ptLista)
- {
- ptLSE *ptaux;
- while(ptLista != NULL)
- {
- ptaux=ptLista;
- ptLista=ptLista->prox;
- free(ptaux);
- }
- return ptLista;
- }
- ptLSE *exibe(ptLSE *ptLista)
- {
- ptLSE *ptaux;
- ptaux = ptLista;
- printf("\nLista: ");
- while(ptaux != NULL)
- {
- printf(" %d ",ptaux->numero);
- ptaux = ptaux->prox;
- }
- return ptLista;
- }
- int main()
- {
- ptLSE *ptLista=NULL;//indica que a lista está vazia.
- int n;
- do{
- printf("\nInsira o numero a ser inserido: ");
- scanf("%d", &n);
- ptLista=insere( ptLista, n);
- }while (n!=0);
- ptLista=exibe(ptLista);
- ptLista=destroi(ptLista);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement