Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct element
  5. {
  6. int val;
  7. struct element *urm;
  8. };
  9.  
  10. typedef struct element NOD;
  11.  
  12. void test(NOD *p)
  13. {
  14. if(p == NULL){
  15. printf("Alocare dinamica esuata !");
  16. exit(1);
  17. }
  18. }
  19. int main (void)
  20. {
  21. NOD *cap_lista, *p, *q, *cap_nou, *fin_nou, *aux, *tmp, *x;
  22. int i, nr_el;
  23.  
  24. printf("Numarul de elemente din lista initiala = ");
  25. scanf("%d",&nr_el);
  26.  
  27. p = (NOD*)malloc(sizeof(NOD));
  28. test(p);
  29. scanf("%d",&p->val);
  30. p->urm = NULL;
  31. cap_lista = p;
  32.  
  33. for(i = 2; i <= nr_el; i++)
  34. {
  35. q = (NOD*)malloc(sizeof(NOD));
  36. test(q);
  37. scanf("%d",&q->val);
  38. q->urm = NULL;
  39. p->urm = q;
  40.  
  41. p = q;
  42. }
  43. puts("Lista initiala este :");
  44. for(p = cap_lista; p != NULL; p = p->urm)
  45.  
  46. printf("%d \n",p->val);
  47.  
  48. puts("Introd. noul cap al listei :");
  49.  
  50. cap_nou = (NOD*)malloc(sizeof(NOD));
  51. scanf("%d",&cap_nou->val);
  52.  
  53. cap_nou->urm = cap_lista;
  54.  
  55. cap_lista = cap_nou;
  56.  
  57. puts("Lista finala cu noul cap este :");
  58. for(p = cap_lista; p != NULL; p = p->urm)
  59.  
  60. printf("%d ",p->val);
  61.  
  62. puts("\nIntrod. noul final al listei :");
  63.  
  64. fin_nou = (NOD*)malloc(sizeof(NOD));
  65. test(fin_nou);
  66. scanf("%d",&fin_nou->val);
  67. fin_nou->urm = NULL;
  68.  
  69. for(p = cap_lista; p != NULL; p = p->urm)
  70.  
  71. if (p->urm == NULL){
  72. p->urm = fin_nou; // Retin adressa noului element
  73. p = fin_nou; // Stabilesc legatura intre ultimul element si noul final
  74. }
  75.  
  76. puts("Lista finala cu noul final este :");
  77. for(p = cap_lista; p != NULL; p = p->urm)
  78. printf("%d ",p->val);
  79.  
  80.  
  81. puts("\n Eliminare elemente <5 din lista:");
  82.  
  83.  
  84. tmp = cap_lista;
  85. p = cap_lista;
  86. while(p != NULL)
  87. {
  88. if(p == cap_lista) p = p->urm;
  89. if(p != NULL){
  90. if(p->val < 5)
  91. {
  92. aux = p;
  93. tmp->urm = p->urm;
  94. p = p->urm;
  95. free(aux);
  96. }
  97. else
  98. {
  99. p = p->urm;
  100. tmp = tmp->urm;
  101. }
  102. }
  103. else break;
  104. }
  105. if (cap_lista->val < 5){
  106. aux = cap_lista;
  107. cap_lista = cap_lista->urm;
  108. free(aux);
  109. }
  110. for(p = cap_lista; p != NULL; p = p->urm)
  111. printf("%d ",p->val);
  112.  
  113. puts("\n Inserare valoarea 4 dupa elementele impare :");
  114.  
  115.  
  116.  
  117.  
  118.  
  119. for(p = cap_lista; p != NULL; p = p->urm)
  120. {
  121. if(p->val % 2 == 0)
  122. {
  123.  
  124.  
  125. aux = p->urm;
  126. p->urm = x;
  127. x->urm = aux;
  128.  
  129. }
  130. else p = p->urm;
  131.  
  132. }
  133.  
  134.  
  135. for(p = cap_lista; p != NULL; p = p->urm)
  136. printf("%d ",p->val);
  137.  
  138.  
  139. return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement