Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Llista reorganitzar_out(const T& x) const
- /* Pre: cert */
- /* Post: el resultat és una llista que conté els mateixos
- elements que el p.i. tal que tots els més petits o iguals
- que x al p.i. precedeixen als més grans que x al p.i. però
- sempre respectant l'ordre que hi havia entre ells al p.i.
- L'element actual de la llista retornada és el primer dels
- més grans que x, si existeix, sinó es situa a la detra del
- tot. El p.i. no es modifica */
- {
- Llista aux;
- aux.longitud=longitud;
- i_reorganitzar_out(aux.primer_node, aux.ultim_node, aux.act, x, primer_node);
- return aux;
- }
- void i_reorganitzar_out(node_llista* &primer, node_llista* &ultim, node_llista* &act,const T& x, node_llista* inici) const
- {
- node_llista* k=nullptr; //Punter final de la llista <= x
- node_llista* k_p=nullptr; //Punter inici de la llista <= x
- node_llista* it=inici; //Punter iterador de la lista;
- node_llista* k_no=nullptr; //Punter final de la llista > x
- node_llista* k_no_p=nullptr; //Punter final de la llista > x
- while(it!=nullptr){
- if(it->info <= x){
- node_llista* aux=new node_llista;
- aux->info=it->info;
- aux->ant=k;
- if(k!=nullptr) (aux->ant)->seg=aux;
- else k_p=aux;
- k=aux;
- /*
- if(k!=nullptr){
- cout<<k<<' '<<k->seg<<' '<<k->ant<<' '<<k->info<<endl;
- }
- */
- }
- else{
- node_llista* aux=new node_llista;
- aux->info=it->info;
- aux->ant=k_no;
- if(k_no!=nullptr) (aux->ant)->seg=aux;
- else k_no_p=aux;
- k_no=aux;
- }
- it=it->seg;
- }
- if(k!=nullptr){
- k->seg=k_no_p;
- primer=k_p;
- }
- else primer=k_no_p;
- if(k_no!=nullptr) k_no->seg=nullptr;
- ultim=k_no;
- act=k_no_p;
- /*
- cout<<endl;
- primer=k;
- while(primer!=nullptr){
- cout<<primer<<' '<<primer->seg<<' '<<primer->ant<<' '<<primer->info<<endl;
- primer=primer->seg;
- }
- */
- // 9 27 3 14 1 5 0
- }
- void consultar_act(){
- cout<<act<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement