Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Element {
- public:
- int data=0;
- Element* left=NULL; // w lewo
- Element* right=NULL; // w prawo
- Element(int d){ data = d; left=right=this; }
- };
- class ListTwoCyclic {
- public:
- Element* link=NULL; // wskaźnik dowolnego elementu
- unsigned long long int size = 0;
- // przesuwa się na element d, szuka idąc w lewo/prawo : nowy link to ten element
- bool moveTo(int d,bool left=true) {
- for (int i=1; i<=size; i++) {
- if (link->data == d) return true;
- else if (left) link=link->left;
- else link=link->right;
- }
- return false; // Nie ma takiego elementu
- }
- // DODAJ element na lewo/prawo od link
- void add(int d,bool left = true) {
- Element* n = new Element(d);
- cout << "add(" << d << ")\n";
- if (size==0) {
- link = n;
- } else {
- Element* l = link->left;
- Element* r = link->right;
- if (left) { // na lewo od link
- link->left =n;
- n->right = link;
- n->left = l;
- l->right = n;
- if (size==1) link->right = n;
- }
- else { // na prawo od link
- link->right = n;
- n->left = link;
- n->right = r;
- r->left = n;
- if (size==1) link->left = n;
- }
- }
- size++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement