Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct nod
  6. {
  7. int info;
  8. nod* leg;
  9. };
  10.  
  11. int n;
  12.  
  13. void parcurgere(nod* v)
  14. {
  15. nod* c=v;
  16. while(c)
  17. {
  18. cout << c->info<<" ";
  19. n++;
  20. c=c->leg;
  21. }
  22. }
  23.  
  24. nod* creare()
  25. {
  26. nod* prim, *ultim, *p;
  27. int nr;
  28. prim=new nod;
  29. ultim=prim;
  30. cout<<"Introduceti un numar: ";
  31. cin>>nr;
  32. if (nr==0)
  33. {
  34. cout<<"Lista este vida.";
  35. return 0;
  36. }
  37. else
  38. {
  39. prim->info=nr;
  40. prim->leg=NULL;
  41. cout<<"Introduceti un numar: ";
  42. cin>>nr;
  43. while(nr)
  44. {
  45. p=new nod;
  46. p->info=nr;
  47. ultim->leg=p;
  48. ultim=p;
  49. ultim->leg=NULL;
  50. cout<<"Introduceti un numar: ";
  51. cin>>nr;
  52. };
  53. return prim;
  54. }
  55. }
  56.  
  57. int inserare (nod *prim, int k, int inf)
  58. {
  59. if (k > n + 1)
  60. return 0;
  61. else
  62. {
  63. nod * p = new nod, *q;
  64. p -> info = inf;
  65. if( k == 1)
  66. {
  67. p -> leg = prim;
  68. prim = p;
  69. }
  70. else if (k == n + 1)
  71. {
  72. q = prim;
  73. while ( q -> leg)
  74. q = q -> leg;
  75. q -> leg = p;
  76. p -> leg = NULL;
  77. }
  78. else
  79. {
  80. q = prim;
  81. int ct = 1;
  82. while ( ct < k - 1)
  83. {
  84. q = q -> leg;
  85. ct++;
  86. }
  87. p -> leg = q -> leg;
  88. q -> leg = p;
  89. }
  90. return 1;
  91. }
  92. }
  93.  
  94. int stergere(nod* &prim, int k)
  95. {
  96. nod *q, *p;
  97. if(k > n)
  98. return 0;
  99. else
  100. {
  101. if(k == 1)
  102. {
  103. q = prim;
  104. prim = prim -> leg;
  105. delete q;
  106. }
  107. else if( k == n)
  108. {
  109. q = prim;
  110. while(q -> leg -> leg)
  111. q = q -> leg;
  112. p = q;
  113. p -> leg = NULL;
  114. delete q -> leg;
  115. }
  116. else
  117. {
  118. q = prim;
  119. int ct = 1;
  120. while(ct < k - 1)
  121. {
  122. q = q -> leg;
  123. ct++;
  124. }
  125. p = q -> leg;
  126. q -> leg = q -> leg -> leg;
  127. delete p;
  128. }
  129. }
  130. return 1;
  131. }
  132.  
  133. int main()
  134. {
  135. nod* prim;
  136. int k, inf;
  137. prim=creare();
  138. parcurgere(prim);
  139. cout<<" numarul de noduri este "<< n << endl;
  140. cout << "Introduceti pozitia si valoarea pentru inserare: ";
  141. cin >> k >> inf;
  142. if (inserare(prim, k, inf))
  143. parcurgere(prim);
  144. else
  145. cout << "Inserarea nu se afla in lista.";
  146. cout << "\nDe pe ce pozitie stergeti? ";
  147. cin >> k;
  148. stergere(prim, k);
  149. parcurgere(prim);
  150. if(stergere(prim, k) == 0)
  151. cout << "Pozitia introdusa nu se afla in lista"<< endl;
  152. else
  153. parcurgere(prim);
  154. return 0;
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement