Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.11 KB | None | 0 0
  1. LSI.cs
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace p23_LSI
  10. {
  11. class LSI
  12. {
  13. Nod L; // Referinta la inceputul listei
  14.  
  15. // Constructori
  16.  
  17. // Construieste lista cu un nod care retine valoarea val
  18. public LSI(int val)
  19. {
  20. L = new Nod(val);
  21. }
  22.  
  23. public LSI()
  24. {
  25. L = null;
  26. }
  27.  
  28. // Destructorul
  29. ~LSI()
  30. {
  31. L = null;
  32. }
  33.  
  34. // Metoda de adaugare a unui nod la inceputul listei si nodul retine valoarea val
  35. public void AddBegin(int val)
  36. {
  37. Nod p = new Nod(val);
  38. p.leg = L;
  39. L = p;
  40. }
  41.  
  42. // Adauga un nod cu informatia val pe pozitia k in lista
  43. public void Add(int val, int k)
  44. {
  45. int n = Count;
  46. if (k <= 1) // Adauga la inceput in lista
  47. {
  48. AddBegin(val);
  49. return;
  50. }
  51. Nod p, q;
  52. q = L;
  53. for (p = L; p != null && k > 1; p = p.leg)
  54. {
  55. k--;
  56. q = p;
  57. }
  58. // Inserez dupa nodul q
  59. p = new Nod(val);
  60. p.leg = q.leg;
  61. q.leg = p;
  62. }
  63.  
  64. // Sterge al k-lea nod din lista
  65. public void Erase(int k)
  66. {
  67. Nod p, q;
  68. int n = Count;
  69. if (k <= 0 || k > n) return;
  70. if (k == 1) // Sterg primul nod
  71. {
  72. p = L;
  73. L = L.leg;
  74. p = null;
  75. return;
  76. }
  77. // Ma pozitionez pe al k-1-lea nod
  78. for (p = L; k > 2; p = p.leg)
  79. k--;
  80. q = p.leg;
  81. p.leg = q.leg;
  82. q = null;
  83. }
  84.  
  85. // Proprietate care numara cate noduri are lista
  86. public int Count
  87. {
  88. get
  89. {
  90. int cnt = 0;
  91. for (Nod p = L; p != null; p = p.leg)
  92. cnt++;
  93. return cnt;
  94. }
  95. }
  96.  
  97. // Indexatorul
  98. public int this[int i]
  99. {
  100. get
  101. {
  102. int n = Count;
  103. if (i <= 0) i = 1;
  104. if (i > n) i = n;
  105. Nod p;
  106. for (p = L; p != null && i > 1; p = p.leg)
  107. i--;
  108. return p.info;
  109. }
  110. set
  111. {
  112. int n = Count;
  113. if (i <= 0) i = 1;
  114. if (i > n) i = n;
  115. Nod p;
  116. for (p = L; p != null && i > 1; p = p.leg)
  117. i--;
  118. p.info = value;
  119. }
  120. }
  121.  
  122. public override string ToString()
  123. {
  124. string s = "";
  125. for (Nod p = L; p != null; p = p.leg)
  126. s += (p.info + " ");
  127. return s;
  128. }
  129.  
  130. // Redefinirea operatorilor
  131. public static LSI operator +(LSI A, LSI B)
  132. {
  133. LSI C = new LSI();
  134. Nod p;
  135. int k = 0;
  136. for (p = A.L; p != null; p = p.leg)
  137. {
  138. k++;
  139. C.Add(p.info, k);
  140. }
  141. for (p = B.L; p != null; p = p.leg)
  142. {
  143. k++;
  144. C.Add(p.info, k);
  145. }
  146. return C;
  147. }
  148.  
  149. public static LSI operator +(LSI A, int val)
  150. {
  151. LSI B = new LSI();
  152. Nod p;
  153. int k = 0;
  154. for (p = A.L; p != null; p = p.leg)
  155. B.Add(p.info, ++k);
  156. B.Add(val, ++k);
  157. return B;
  158. }
  159.  
  160. public static LSI operator +(int val, LSI A)
  161. {
  162. LSI B = new LSI(val);
  163. for (int i = 1; i <= A.Count; i++)
  164. B.Add(A[i], i + 1);
  165. return B;
  166. }
  167. }
  168. }
  169.  
  170. Nod.cs
  171.  
  172.  
  173. using System;
  174. using System.Collections.Generic;
  175. using System.Linq;
  176. using System.Text;
  177. using System.Threading.Tasks;
  178.  
  179. namespace p23_LSI
  180. {
  181. class Nod
  182. {
  183. public int info;
  184. public Nod leg;
  185.  
  186. public Nod(int val)
  187. {
  188. info = val;
  189. leg = null;
  190. }
  191. }
  192. }
  193.  
  194.  
  195. Program.cs
  196.  
  197.  
  198. using System;
  199. using System.Collections.Generic;
  200. using System.Linq;
  201. using System.Text;
  202. using System.Threading.Tasks;
  203.  
  204. namespace p23_LSI
  205. {
  206. class Program
  207. {
  208. static void Main(string[] args)
  209. {
  210. LSI A = new LSI();
  211. for (int i = 20; i >= 1; i--)
  212. A.AddBegin(i * i);
  213. Console.WriteLine(A);
  214.  
  215. LSI B = new LSI();
  216. for (int i = 10; i >= 0; i--)
  217. B.AddBegin(i);
  218.  
  219. LSI C = A + B;
  220. Console.WriteLine(C);
  221.  
  222. B = A + 444;
  223. Console.WriteLine(A);
  224. Console.WriteLine(B);
  225.  
  226. B = 333 + B;
  227. Console.WriteLine(B);
  228. }
  229. }
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement