Advertisement
ricco_soares

LSE//ED

Apr 22nd, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.07 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct tipoNo ptLSE;
  4. struct tipoNo{
  5. int numero;
  6. ptLSE *prox;
  7. };
  8. ptLSE *insere(ptLSE *ptLista, int n)
  9. {
  10. int n_elementos=0;//variável auxiliar que realiza a contagem do número de elementos
  11. ptLSE *novo;//novo elemento
  12. ptLSE *ant;//ponteiro auxiliar para o elemento anterior.
  13. ptLSE *ptaux;
  14. ptaux=ptLista;
  15. novo=(ptLSE*)malloc(sizeof(ptLSE));//alocação de um novo nodo.
  16. novo->numero=n;
  17. while (ptaux->prox!=NULL)
  18. {
  19. ant = ptaux;
  20. ptaux = ptaux->prox;
  21. n_elementos=n_elementos+1;
  22. }
  23. /*encaeia o elemento*/
  24. if (ant == NULL) /*o anterior não existe, insere na primeira posição*/
  25. {
  26. novo->prox = ptLista;
  27. ptLista = novo;
  28. }
  29. else /*elemento inserido na posição de acordo com seu sinal e paridade.*/
  30. {
  31. if(n>0)//testa se o número é positivo.
  32. {
  33. if(n%2==0)//caso no qual o número é positivo e par.
  34. {//insere o elemento no início da lista.
  35. novo->prox = ptLista;
  36. ptLista = novo;
  37. }
  38. else//caso no qual o número é positivo e ímpar.
  39. {//insere o elemento no fim da lista.
  40. novo->prox=NULL;
  41. ptaux->prox=novo;
  42. }
  43. }
  44. else//caso em que o número é negativo.
  45. {//insere o elemento no meio da lista.
  46. ant=NULL;
  47. ptaux=ptLista;
  48. if(n_elementos%2==0)//caso no qual o número de elementos é par.
  49. {
  50. n_elementos=n_elementos/2;
  51. }
  52. else
  53. {
  54. n_elementos=n_elementos-1;
  55. n_elementos=n_elementos/2;
  56. }
  57. while(n_elementos=!0)//procura o elemento do meio
  58. {
  59. ant=ptaux;
  60. ptaux=ptaux->prox;
  61. n_elementos=n_elementos-1;
  62. }
  63. novo->prox=ptaux;//realiza a inserção do elemento
  64. ant->prox=novo;
  65. }
  66. }
  67. return ptLista;
  68. }
  69.  
  70. ptLSE *destroi(ptLSE *ptLista)
  71. {
  72. ptLSE *ptaux;
  73. while(ptLista != NULL)
  74. {
  75. ptaux=ptLista;
  76. ptLista=ptLista->prox;
  77. free(ptaux);
  78. }
  79. return ptLista;
  80. }
  81.  
  82. ptLSE *exibe(ptLSE *ptLista)
  83. {
  84. ptLSE *ptaux;
  85. ptaux = ptLista;
  86. printf("\nLista: ");
  87. while(ptaux != NULL)
  88. {
  89. printf(" %d ",ptaux->numero);
  90. ptaux = ptaux->prox;
  91.  
  92. }
  93. return ptLista;
  94. }
  95.  
  96. int main()
  97. {
  98. ptLSE *ptLista=NULL;//indica que a lista está vazia.
  99. int n;
  100. do{
  101. printf("\nInsira o numero a ser inserido: ");
  102. scanf("%d", &n);
  103. ptLista=insere( ptLista, n);
  104. }while (n!=0);
  105.  
  106. ptLista=exibe(ptLista);
  107.  
  108. ptLista=destroi(ptLista);
  109. return 0;
  110.  
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement