Advertisement
Dawid_PAr

cyklicznaListaDwuKier

Aug 20th, 2019
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. class Element {
  2. public:
  3. int data=0;
  4. Element* left=NULL; // w lewo
  5. Element* right=NULL; // w prawo
  6. Element(int d){ data = d; left=right=this; }
  7. };
  8. class ListTwoCyclic {
  9. public:
  10. Element* link=NULL; // wskaźnik dowolnego elementu
  11. unsigned long long int size = 0;
  12. // przesuwa się na element d, szuka idąc w lewo/prawo : nowy link to ten element
  13. bool moveTo(int d,bool left=true) {
  14. for (int i=1; i<=size; i++) {
  15. if (link->data == d) return true;
  16. else if (left) link=link->left;
  17. else link=link->right;
  18. }
  19. return false; // Nie ma takiego elementu
  20. }
  21. // DODAJ element na lewo/prawo od link
  22. void add(int d,bool left = true) {
  23. Element* n = new Element(d);
  24. cout << "add(" << d << ")\n";
  25. if (size==0) {
  26. link = n;
  27. } else {
  28. Element* l = link->left;
  29. Element* r = link->right;
  30. if (left) { // na lewo od link
  31. link->left =n;
  32. n->right = link;
  33. n->left = l;
  34. l->right = n;
  35. if (size==1) link->right = n;
  36.  
  37. }
  38. else { // na prawo od link
  39. link->right = n;
  40. n->left = link;
  41. n->right = r;
  42. r->left = n;
  43. if (size==1) link->left = n;
  44. }
  45. }
  46. size++;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement