Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. Llista  reorganitzar_out(const T& x) const
  2. /* Pre: cert */
  3. /* Post: el resultat és una llista que conté els mateixos
  4. elements que el p.i. tal que tots els més petits o iguals
  5. que x al p.i. precedeixen als més grans que x al p.i. però
  6. sempre respectant l'ordre que hi havia entre ells al p.i.
  7. L'element actual de la llista retornada és el primer dels
  8. més grans que x, si existeix, sinó es situa a la detra del
  9. tot. El p.i. no es modifica */
  10. {
  11.     Llista aux;
  12.     aux.longitud=longitud;
  13.     i_reorganitzar_out(aux.primer_node, aux.ultim_node, aux.act, x, primer_node);
  14.     return aux;
  15. }
  16.  
  17. void i_reorganitzar_out(node_llista* &primer, node_llista* &ultim, node_llista* &act,const T& x, node_llista* inici) const
  18. {
  19.     node_llista* k=nullptr;                 //Punter final de la llista <= x
  20.     node_llista* k_p=nullptr;               //Punter inici de la llista <= x
  21.     node_llista* it=inici;              //Punter iterador de la lista;
  22.     node_llista* k_no=nullptr;              //Punter final de la llista > x
  23.     node_llista* k_no_p=nullptr;            //Punter final de la llista > x
  24.     while(it!=nullptr){
  25.     if(it->info <= x){
  26.         node_llista* aux=new node_llista;
  27.         aux->info=it->info;
  28.         aux->ant=k;
  29.         if(k!=nullptr) (aux->ant)->seg=aux;
  30.         else k_p=aux;
  31.         k=aux;
  32.         /*
  33.         if(k!=nullptr){
  34.             cout<<k<<' '<<k->seg<<' '<<k->ant<<' '<<k->info<<endl;
  35.         }
  36.         */
  37.     }
  38.     else{
  39.         node_llista* aux=new node_llista;
  40.         aux->info=it->info;
  41.         aux->ant=k_no;
  42.         if(k_no!=nullptr) (aux->ant)->seg=aux;
  43.         else k_no_p=aux;
  44.         k_no=aux;
  45.     }
  46.     it=it->seg;
  47.     }
  48.     if(k!=nullptr){
  49.         k->seg=k_no_p;
  50.         primer=k_p;
  51.     }
  52.     else primer=k_no_p;
  53.     if(k_no!=nullptr) k_no->seg=nullptr;
  54.     ultim=k_no;
  55.     act=k_no_p;
  56. /* 
  57.     cout<<endl;
  58.     primer=k;
  59.     while(primer!=nullptr){
  60.             cout<<primer<<' '<<primer->seg<<' '<<primer->ant<<' '<<primer->info<<endl;
  61.             primer=primer->seg;
  62.     }
  63. */
  64.     // 9 27 3 14 1 5 0
  65. }
  66.  
  67.  
  68. void consultar_act(){
  69.     cout<<act<<endl;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement