Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.14 KB | None | 0 0
  1. #include<iostream>
  2. /*
  3. transmiterea proprietatilor in momentul derivarii unei clase
  4.  
  5. [A] in clasa de baza ( parinte ) pot avea specificiatori
  6.        - private
  7.        - public
  8.        - protected
  9. [B] derivarea se poate face cu un specificator de acces
  10.       in proprietatile bazei
  11.        - private
  12.        - public
  13.        - protected
  14.  
  15.        [clasa de baza]
  16.            |
  17.            |
  18.             *
  19.      [clasa derivata]
  20.  
  21.     daca derivarea se executa cu specificator "public"
  22.     de acces in clasa parinte toate proprietatile
  23.     din baza ( parinte ) se transmit in derivata ( copil )
  24.     cu aceleasi vizibilitati precum in parinte
  25.  
  26. ATT :
  27. in momentul in care instantiez ( declar o variabila de
  28.                                 tip obiect )
  29. un reprezentant al unei clase pe o ierahie
  30. SE APELEAZA [ toti ] !!! constructorii pana la acel obiect
  31.  
  32. */
  33.  
  34. using namespace std;
  35. int n;
  36. // obiect element din lista
  37. class element {
  38.  
  39.                             private :
  40.                             int info;
  41.                             class element *next;
  42.                             public :
  43.                             // metode pe care le pot utiliza
  44.                             // pentru a ccesa date "private"
  45.                             // din interiorul obiectului
  46.                             element(){next=NULL;}
  47.                             int set_value(int thisvalue) { info=thisvalue;}
  48.                             int reveal_value(){return info;}
  49.                             int set_next(element *next_element){next=next_element;}
  50.                             int *reveal_next(){return next;}
  51.                           };
  52. // descrierea generica a unei liste simplu inlantuite
  53. // ( din care prin derivari vom dori sa dezvoltam clase
  54. //  specializate pentru lucrul cu restictii LIFO,FIFO )
  55.  
  56. class some_list
  57. {
  58. private :
  59. class element *start,*curent,*sfarsit;
  60. int lungime;
  61. public :
  62. // metoda ( functie ) speciala ( de tip eveniment )
  63. // constructor ( se apeleaza automat cand
  64. // declar un obiect reprezentant al clasei
  65. // ( cand declar o variabila de tipul obiectului )
  66. some_list(){  // creez o lista vida
  67.                   start=curent=sfarsit=NULL;
  68.                   lungime=0;
  69.                  }
  70. int reveal_lenght(){return lungime;}
  71. int print_me() { element *walker=start;
  72.                         while (walker->reveal_next()!=NULL) {
  73.                                 cout<<endl<<walker->reveal_value();
  74.                                 //walker=walker->next;
  75.                                 walker->set_next(walker->reveal_next())   }
  76.                         cout<<endl<<walker->reveal_value();}
  77. };
  78.  
  79. class some_stack:public some_list
  80. {
  81.     public:
  82.     some_stack(){start=curent=sfarsit=NULL;
  83.                         lungime=0;
  84.                        }
  85.     int push_stack(some_list this_stack,int some_value);  // operatie adaugare element
  86.     int pop_stack(some_list,int *some_value);  // operatie eliminare element
  87.     int stack_empty();                                     // instrument consultate lista
  88. };
  89.  
  90. some_stack L;
  91.  
  92. int main()
  93. {
  94. L.push_stack(L,13);
  95. cout<<endl;
  96. L.print_me();
  97. // L.push_stack(L,17);
  98. L.print_me();
  99. }
  100.  
  101. int some_stack::stack_empty()
  102. {
  103. if (this->reveal_lenght()>=1) return 0;
  104. return 1;
  105. }
  106.  
  107. int some_stack::push_stack(some_list this_stack,int some_value)
  108. {
  109. element *new_one=new element;
  110. if (this_stack.reveal_lenght()==0)
  111.         {
  112.         if (new_one!=NULL) {
  113.                                new_one->set_value(some_value);
  114.                                start=curent=sfarsit=new_one;
  115.                                lungime=1;
  116.                                return 1;
  117.                               }
  118.         }
  119.    else  {
  120.       // !!!  task [1]
  121.      // (*new_one).info=some_value;
  122.      new_one->info=some_value;
  123.      new_one->next_element=NULL;
  124.      sfarsit=curent=new_one;
  125.  
  126.  
  127.            }
  128.  
  129. return 0;
  130. }
  131.  
  132.  
  133. int some_stack::pop_stack(some_list this_stack,int *old_value)
  134. {
  135. // !!! task [2]
  136.  
  137. }
  138.  
  139. /*
  140. De terminat :
  141. [1] push sa functioneze si pe liste alocate dinamic
  142.       simplu inlantuit operate LIFO
  143.       si in cazul cand stiva are o inaltime >1
  144. [2] de creat toate functionalitatile pop
  145. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement