print_back.cpp

// $Id$

/* 
   COMIENZO DE DESCRIPCION

   Escriba una funci\'on 
   {\tt void print_back (list<int> & L, list <int> :: iterator p)} que,
   en forma {\it recursiva}, imprima una lista en sentido inverso, 
   es decir, desde el final al principio de la lista.  Se le da 
   como dato el procedimiento a la primera posici\'on de la lista.  
   [Ejercicio 3 del final del 14/02/2002]
   keywords: lista

   FIN DE DESCRIPCION 
*/
// -----------------------------------------------------------------
#include <list>
#include <iostream>
using namespace std;

// -----------------------------------------------------------------
// imprime en orden inverso (por recursion, de atras para adelante)
void print_back (list<int> &L,list<int>::iterator p) {
  list<int>::iterator q; 
  if (p==L.end()) return;
  q=p ; q++;
  print_back (L,q);
  cout << *p << " ";
}
void print_back (list<int> &L) { 
  print_back (L,L.begin()); 
  cout << endl;
}

// -----------------------------------------------------------------
// imprime en orden normal (de adelante para atras)
void  print (list<int> &L) {
  list<int>::iterator p;
  p=L.begin();
  while (p!=L.end()) cout << *p++ << " ";
  cout << endl;
}

// -----------------------------------------------------------------
int main() {
  int v[]={0,1,2,3,4,5,6,7,8,9,-1};
  int *z;
  list<int> L;
  list<int>::iterator p; 

  // construye lista
  z=v;
  while (*z!=-1) L.insert(L.end(),*z++);

  cout << endl;
  cout << "Lista : ";
  print (L);

  cout << "Lista inversa : ";
  print_back (L);

  cout << endl;
  return 0;
} // end main
// -----------------------------------------------------------------

Generated by GNU Enscript 1.6.6.