AntonioVillanueva

Ejemplo de listas en C++

May 25th, 2020
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.01 KB | None | 0 0
  1. /*
  2. 1. Una función "full()", que devuelve 1 si la lista está llena, y 0 en otro caso
  3. 2. Una función "element(i)", que devuelve el valor contenido en la i-ésima posición, o VACIO, si la lista no contiene elemento en esa posición. OJO: no lo remueve, sólo toma una copia del valor almacenado.
  4. 3. Una función "insert(x)" que inserta el valor "x" al final de la lista y devuelve 1 si esto se se realiza con éxito, o 0 si no es posible
  5. 4. Una función "remove(i)" que elimina el el valor contenido en la i-ésima posición, o VACIO, si la lista no contiene elemento en esa posición.
  6. 5. Un procedimiento main() desde el que se puede invocar cualquiera de las funciones anteriores.
  7. */
  8. #include <iostream>
  9. #include <list> //lista
  10. using namespace std;
  11.  
  12. //Funcion auxiliar para ver lista
  13. void ver(list <string> *lista){
  14.     list<string>::iterator pos;
  15.     int count(0);//Nos muestra el indice de la lista
  16.     pos=(*lista).begin();
  17.     while (pos!=(*lista).end()){
  18.         cout <<count++<<" = "<<*pos<<endl;
  19.         pos++;
  20.     }
  21. }
  22.  
  23. //1. Una función "full()", que devuelve 1 si la lista está llena, y 0 en otro caso
  24. int full(list <string> lista){ return (lista.size() >0 ? 1 : 0 );}
  25.  
  26. //2. Una función "element(i)", que devuelve el valor contenido en la i-ésima posición, o VACIO, si la lista no contiene elemento en esa posición.
  27. string element(list <string> lista,int i){ 
  28.     list<string>::iterator pos=lista.begin();  
  29.     while(i--){pos++;}
  30.     return *pos;   
  31. }
  32.  
  33. //3. Una función "insert(x)" que inserta el valor "x" al final de la lista y devuelve 1 si esto se se realiza con éxito, o 0 si no es posible
  34. int insert(list <string> *lista,string elemento){
  35.     long unsigned int tam=(*lista).size();//tam. original antes de anadir elemento
  36.     (*lista).push_back(elemento);//Poner en comentario para ver respuesta 1 o 0 a la escritura 
  37.      return (tam+1==(*lista).size() ? 1 : 0);//Se incrementa 1 ok
  38. }
  39.  
  40. //4. Una función "remove(i)" que elimina el el valor contenido en la i-ésima posición, o VACIO, si la lista no contiene elemento en esa posición.
  41. void remove(list <string> *lista,int i){
  42.     list<string>::iterator pos=(*lista).begin();   
  43.  
  44.     while(i--){pos++;}
  45.     (*pos).erase();
  46. }
  47.  
  48. //5. Un procedimiento main() desde el que se puede invocar cualquiera de las funciones anteriores.
  49. int main (){
  50.     list <string> lista{"A","B","C","d","e","f"};
  51.     list <string> vacia;//vacia
  52.    
  53.     //1. Una función "full()", que devuelve 1 si la lista está llena, y 0 en otro caso
  54.     cout <<"Lista llena "<<full(lista)<<endl;//Test full llena     
  55.     cout <<"Lista vacia "<<full(vacia)<<endl;//Test full vacia     
  56.    
  57.     //2. Una función "element(i)", que devuelve el valor contenido en la i-ésima posición,
  58.     cout <<"ver elemento n° 3(d) = "<<element(lista,3)<<endl;
  59.    
  60.     //3. Una función "insert(x)" que inserta el valor "x" al final de la lista y devuelve 1 si esto se se realiza
  61.     cout <<"INSERT = "<< insert(&lista,"ultimo")<<endl;
  62.     ver (&lista);  
  63.    
  64.     //4. Una función "remove(i)" que elimina el el valor contenido en la i-ésima posición,
  65.     remove(&lista,2);  
  66.     ver (&lista);      
  67. }
Add Comment
Please, Sign In to add comment