Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct node {
  5. int valor;
  6. struct node *prox;
  7. struct node *ante;
  8. }Lista;
  9.  
  10. Lista *criar (Lista*, int x);
  11. void show(Lista *);
  12. Lista *remover(Lista*, int);
  13. Lista *dividir (Lista *, int);
  14.  
  15. int main (){
  16. Lista *prim = NULL,*prim2;
  17. int i,num;
  18.  
  19. for (i=0;i<5;i++)
  20. prim = criar(prim,i);
  21.  
  22. show(prim);
  23. printf ("\nInforme o valor a ser excluido : ");
  24. scanf ("%d",&num);
  25. prim = remover(prim, num);
  26. printf ("\n\nLista com exclusao\n");
  27. show(prim);
  28.  
  29. printf ("\nA partir de qual valor deseja dividir?: ");
  30. scanf ("%d",&num);
  31. prim2 = dividir(prim,num);
  32. printf ("\n\nLista dividida \n");
  33. show (prim2);
  34. return 0;
  35. }
  36.  
  37. Lista *dividir (Lista *ini, int x){
  38. Lista *p=ini->prox, *q = ini, *ini2=NULL;
  39. for (; p != ini && p->valor != x ; q = p, p = p->prox);
  40. ini2 = p;
  41. if ( p-> valor == x){
  42. if ( p == ini){
  43. ini = ini->prox;
  44. ini->ante = q;
  45. }else {
  46. p->ante = ini2->ante;
  47. ini2->ante = q;
  48. p->ante = p;
  49. }
  50. q -> prox = ini2;
  51. }
  52. return ini2;
  53. }
  54.  
  55. void show(Lista *ini){
  56. Lista *p=ini;
  57. while (1){
  58. printf ("%d -> ",p->valor);
  59. p=p->prox;
  60. if (p==ini){
  61. break;
  62. }
  63. }
  64. }
  65.  
  66. Lista *remover(Lista *ini, int x){
  67. Lista *p = ini->prox, *q = ini;
  68. for (; p != ini && p->valor != x ; q = p, p = p->prox);
  69. if (p->valor == x){
  70. if ( p == ini){
  71. ini = ini->prox;
  72. ini->ante = q;
  73. }else {
  74. p->prox->ante = q;
  75. }
  76. q->prox = p->prox;
  77. free(p);
  78. }
  79. return ini;
  80. }
  81.  
  82. Lista *criar (Lista *ini, int x){
  83. Lista *p, *q;
  84. p = malloc(sizeof(Lista));
  85. if (!p){
  86. printf("Memória Insuficiente!!");
  87. exit (-1);
  88. }
  89.  
  90. p->valor = x;
  91.  
  92. if ( ini == NULL){
  93. ini = p;
  94. }else {
  95. q->prox = p;
  96. }
  97.  
  98. ini->ante = p;
  99. p->ante = q;
  100. p->prox = ini;
  101. q = p;
  102.  
  103. return ini;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement