Advertisement
J00ker

Untitled

May 20th, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. struct Nod
  7. {
  8. int info;
  9. Nod *leg;
  10. };
  11.  
  12. struct Lista /// Simplu inlantuita
  13. {
  14. Nod *L;
  15. void Inserare1(int x) /// Inserare la inceput
  16. {
  17. Nod *p;
  18. p = new Nod;
  19. p -> info = x;
  20. p -> leg = L;
  21. L = p;
  22. }
  23.  
  24. void Inserare2(Nod *p, int x) /// Inserare dupa nodul de adresa memorata in p
  25. {
  26. Nod *q;
  27. q = new Nod;
  28. q -> info = x;
  29. q -> leg = p -> leg;
  30. p -> leg = q;
  31. }
  32.  
  33. /// Insereaza dupa al k-lea nod
  34. /// un nou nod cu informatia x;
  35. /// Daca lista are mai putin de
  36. /// k noduri, inserarea se face
  37. /// la sfarsitul listei.
  38. void Inserare3(int k, int x)
  39. {
  40. Nod *p, *q;
  41. for(p = L; (k > 1) && (p != NULL); p = p -> leg)
  42. {
  43. k--;
  44. q = p;
  45. }
  46. if(p == NULL) /// Inserez dupa q
  47. Inserare2(q, x);
  48. else /// Inserez dupa p
  49. Inserare2(p, x);
  50. }
  51.  
  52. void Parcurgere() /// Parcurgerea listei
  53. {
  54. for(Nod *p = L; p != NULL; p = p -> leg)
  55. cout << p -> info << " ";
  56. cout << "\n";
  57. }
  58.  
  59. void Init() /// Initializarea listei vide
  60. {
  61. L = NULL;
  62. }
  63.  
  64. void Sterge1() /// Stergerea primului nod
  65. {
  66. if(L = NULL) return;
  67. Nod *p;
  68. p = L;
  69. L = p -> leg;
  70. delete p;
  71. }
  72.  
  73. void Sterge2(Nod *p) /// Stergerea nodului dupa nodul de adresa memorata p
  74. {
  75. Nod *q;
  76. q = p -> leg;
  77. p -> leg = q -> leg;
  78. delete q;
  79. }
  80.  
  81. Nod *Cautare(int x) /// Cautarea valorii x in lista si returnarea pointer-ului
  82. {
  83. Nod *p;
  84. for(p = L; p != NULL; p = p -> leg)
  85. if(p -> info == x)
  86. return p;
  87. return NULL;
  88. }
  89.  
  90. void ParcDS(Nod *p) /// Parcurgerea de la dreapta la stanga a nodurilor listei
  91. {
  92. if(p != NULL)
  93. {
  94. ParcDS(p -> leg);
  95. cout << p -> info << " ";
  96. }
  97. }
  98. };
  99.  
  100. int Verif(Lista a, int n)
  101. {
  102. int i;
  103. Nod q, p;
  104. q = p = a.L;
  105. int nr = 1;
  106. for(i = 0; i < n/2; i++)
  107. q = q -> leg;
  108. for(i = 0; i < n/2 && nr ; i++)
  109. {
  110. if(p -> info != q -> info)
  111. nr = 0;
  112. q = q -> leg;
  113. p = p -> leg;
  114. }
  115. return nr;
  116.  
  117. }
  118.  
  119. int main()
  120. {
  121. Lista a; a.Init();
  122. ifstream fin("secv.in");
  123. int n, i, x;
  124. fin >> n;
  125. fin >> x;
  126. a.Inserare1(x);
  127. for(i = 1; i < n; i++)
  128. {
  129. fin >> x;
  130. a.Inserare3(i, x);
  131. }
  132. fin.close();
  133. a.Parcurgere();
  134. cout << "\n" << Verif(a, n);
  135.  
  136. return 0;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement