Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- class elementD{ private: int info;
- class elementD *next;
- class elementD *prev;
- public: elementD(){ next=NULL;}
- ~elementD(){prev = NULL;};
- int set_value(int this_value){ info=this_value;}
- int reveal_value(){ return info; }
- int set_next(elementD *next_element){ next=next_element; }
- int set_prev(elementD *prev_element){ prev=prev_element; }
- elementD *reveal_prev(){ return prev; };
- elementD *reveal_next(){ return next; }};
- class some_listD{ private: elementD *start,*current,*last;
- int lungime;
- public: some_list(){ start=current=last=NULL;lungime=0; }
- int set_lenght(int new_lenght){ lungime=new_lenght; }
- int set_start(elementD *new_start){ start=new_start; }
- int set_current(elementD *new_current){ current=new_current; }
- int set_end(elementD *new_last){ last=new_last; }
- elementD *reveal_end(){ return last; }
- elementD *reveal_start(){ return start; }
- int reveal_lenght(){ return lungime; }
- int stack_empty()
- {
- if(reveal_lenght()== 0) return 1;
- return 0;
- }
- elementD *reveal_current(){ return current; }
- int reveal_me(int direction){
- cout<<endl; cout<<" START : ";
- int counter=reveal_lenght();
- if ( direction==1) {
- elementD *walker=start;
- if (counter>=1){while(counter>=2){
- cout<<walker->reveal_value()<<" -> ";
- walker=walker->reveal_next();counter--;}
- cout<<walker->reveal_value();} cout<<" : STOP ";
- }
- else {
- elementD *walker = last;
- if (counter>=1){while(counter>=2){
- cout<<walker->reveal_value()<<" -> ";
- walker=walker->reveal_prev();counter--;}
- cout<<walker->reveal_value();} cout<<" : STOP ";
- }
- return 1;}
- };
- class no_strategyD:public some_listD
- {
- public :
- int find_value(int this_value);
- int addsome ( int value, int direction );
- int delsome ( int *old_value,int direction );
- };
- no_strategyD L;
- int main(){
- L.addsome(1,1);
- L.addsome(2,1);
- L.addsome(3,1);
- L.some_listD::reveal_me(0); // 1 2 3
- L.some_listD::reveal_me(1); // 3 2 1
- return 0;
- }
- int no_strategyD::addsome ( int value, int direction )
- {
- // Work : (1) lista vida (2) adaugare dreapta curent la sfarsit
- if (stack_empty()) {
- elementD *new_one;
- new_one->set_value(value);
- new_one->set_next(NULL);
- some_listD::set_lenght(1);
- some_listD::set_current(new_one);
- some_listD::set_start(new_one);
- some_listD::set_end(new_one);
- return -1;
- }
- if (direction==0) {
- if (some_listD::reveal_current()==some_listD::reveal_start())
- {
- // .... (!) // pentru curent pe primul element
- elementD *new_one = new elementD;
- new_one->set_value(value);
- new_one->set_next(some_listD::reveal_current());
- elementD *walker=some_listD::reveal_start();
- while(walker->reveal_next()!=some_listD::reveal_end())
- walker=walker->reveal_next();
- new_one->set_next(some_listD::reveal_current());
- walker->set_next(new_one);
- some_listD::set_lenght(some_listD::reveal_lenght()+1);
- return -1;
- }
- else {
- elementD *new_one=new elementD;
- new_one->set_value(value);
- new_one->set_next(some_listD::reveal_current());
- elementD *walker=some_listD::reveal_start();
- while(walker->reveal_next()!=some_listD::reveal_current())
- walker=walker->reveal_next();
- new_one->set_next(some_listD::reveal_current());
- walker->set_next(new_one);
- some_listD::set_lenght(some_listD::reveal_lenght()+1);
- return 1;
- }
- }
- //.... (!) pentru direction!=0 adica adaugarea la dreapta
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement