Advertisement
Guest User

Untitled

a guest
Oct 24th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. //eliminar cada segundo elemento de uma lista letra k
  2. void removesegundoElemento(listadup*inicio)
  3. {
  4. listadup aux1,aux2,aux3,aux;
  5. int j;
  6. if(*inicio==NULL)//se o inicio for null
  7. {
  8. puts("lista vazia");
  9. getch();
  10. }
  11. else
  12. {
  13. aux=*inicio;//declara o auxilixar
  14. while(aux!=NULL)//a cada vez que o while roda o contador conta +1
  15. {
  16. aux=aux->prox;
  17. j++;
  18. }
  19. if(j>=2)//if pois se a lista tiver sรณ 1 elemento nao tem como remover o segundo elemento
  20. {
  21. //atualizando a lista
  22. aux1=*inicio;
  23. aux2=aux1->prox;
  24. aux3=aux2->prox;
  25. free(aux2);
  26. aux1->prox=aux3;
  27. }
  28. else
  29. {
  30. puts("A lista nao tem segundo elemento");
  31. getch();
  32. }
  33.  
  34. }
  35. }
  36.  
  37.  
  38. //LETRA D INVERTE LISTA
  39. void inverteLista(listadup*inicio,listadup*fim,listadup*inicio2,listadup*fim2)
  40. {
  41. listadup aux,aux1;
  42. if(*inicio==NULL)
  43. {
  44. puts("Lista vazia");
  45. getch();
  46. }
  47. else
  48. //1-2-3-4 4-3-2-1
  49. {
  50. //eu fiz uma lista 2 como auxiliar,passando os noh para ela invertidos,depois devolvendo a lista original
  51. *inicio2=*fim;//inicio 2 recebe o fim da lista 1
  52. aux=*inicio2;//aux recebe o inicio 2
  53. aux1=*fim;//aux 1 recebe o fim
  54. while(aux1!=NULL)//enquanto o aux1 nao for null
  55. {
  56. aux->prox=aux1->ant;//faz o inicio2 receber um noh do fim1
  57. aux=aux->prox;//passar os auxiliar do inicio 2 para o proximo
  58. aux1=aux1->ant;//passa o auxiliar do fim para o ant
  59. }
  60. *inicio=*inicio2;//faz a lista original receber a lista invertida
  61. }
  62. }
  63.  
  64.  
  65. //Letra f,eliminir o enesimo termo da lista
  66. void eliminarEnesimo(int y,listadup*inicio,listadup*fim)
  67. {
  68. int j=0;
  69. listadup aux,aux1,aux2,aux3,aux4,aux5,aux6;
  70. if(*inicio==NULL)//se inicio for vazio
  71. {
  72. puts("lista vazia");
  73. getch();
  74. }
  75. else
  76. {
  77. aux6=*inicio;//declara o auxilixar
  78. while(aux!=NULL)//a cada vez que o while roda o contador conta +1
  79. {
  80. aux6=aux6->prox;
  81. j++;
  82. }
  83. aux1=*inicio;
  84. for(int i=1;i<y;i++)
  85. {
  86. aux1=aux1->prox;
  87. }
  88. if(y<0 ||y>4)
  89. {
  90. puts("nao existe esta pocicao");
  91. getch();
  92. }
  93. else
  94. {
  95. if((*inicio)->info==aux1->info)//se o numero que quero remover estiver no inicio
  96. {
  97. aux3=(*inicio)->prox;//aux1 para segurar o proximo noh
  98. aux2=*inicio;//aux2 2 para remover o inicio
  99. free(aux2);//removendo o inicio
  100. *inicio=aux3;//atualizando o inicio
  101. (*inicio)->ant=NULL;//atualizando o NULL
  102. }
  103. else
  104. {
  105. if((*fim)->info==aux1->info)
  106. {
  107. aux=(*fim)->ant;//auxiliar para segurar o noh anterior do fim
  108. aux3=*fim;//auxiliar para remover o fim
  109. free(aux3);//comando para remover o fim
  110. *fim=aux;//atualizando o novo fim
  111. (*fim)->prox=NULL;//atualizando o novo NULL
  112. }
  113. else
  114. {
  115. aux4=aux1->ant;
  116. aux4->prox=aux1->prox;
  117. free(aux1);
  118. }
  119. }
  120.  
  121. }
  122. }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement