sorted_list1.cpp

// $Id$

/* 
   COMIENZO DE DESCRIPCION 

   Escriba procedimientos para insertar, suprimir y buscar    
   un elemento en una lista ordenada {\tt L}. 
   Versi\'on {\bf sin} {\tt funciones gen\'ericas} 
   (comparar con {\tt sorted_list2.cpp} y {\tt sorted_list3.cpp}). 
   keywords: lista

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

// -----------------------------------------------------------------
// inserta un item "x" en la lista ordenada "L"
void inserta_ord (list<int> & L, const int & x) {
  list<int>::iterator p ;
  p = L.begin ();
  while (p != L.end () && *p < x) p++;     // avanza si *p < x
  L.insert (p, x);
} // end void

// -----------------------------------------------------------------
// suprime un item "x" en la lista ordenada "L"
void suprime_ord (list<int> & L, const int & x) { 
  list<int>::iterator p ;
  p = L.begin ();  
  while (p != L.end () && *p < x) p++;        // avanza si *p < x
  if (p != L.end () && *p == x) L.erase (p);  // suprime "p"
} // end void

// -----------------------------------------------------------------
// busca posicion "p" de un item "x" en la lista ordenada "L"
list<int>::iterator busca_ord (list <int> & L, const int & x) {
  list<int>::iterator p ; 
  p = L.begin ();
  while (p != L.end() && *p < x) p++;  // avanza si *p < x
  if ( p != L.end () && *p == x ) 
    return p ;                         // la posicion de "x" en "L"
  else
    return L.end ();                   // retorna fin de lista
} // end iterator

//--------------------------------------------------------------------
int main() {

  int v1[] = {4,2,6,3,7,1,-1}  ;  int const n1 = 6 ;
  int v2[] = {9,0,3,2,7,8,4,-1};  int const n2 = 7 ;
  list<int> S;
  list<int> :: iterator p;
  int x ;

  cout << endl;
  cout << "Tareas simples sobre una lista ordenada S " << endl;

  for (int i=0; i<n1; i++) inserta_ord (S,v1[i]);
  for (int i=0; i<n2; i++) inserta_ord (S,v2[i]);
  cout << "Lista ordenada actual S: "; printl (S); cout << endl;

  for (int i=0; i<n1; i++) inserta_ord (S,v1[i]);
  cout << "Lista ordenada actual S: "; printl (S); cout << endl;

  for (int i=0; i<n1; i++) suprime_ord (S,v1[i]);
  cout << "Lista ordenada actual S: "; printl (S); cout << endl;

  x = 6 ; cout << endl << "Busca elemento x = " << x << endl;
  p = busca_ord (S,x);
  if ( p != S.end () )
    cout << "se lo encontro en la lista " << endl;
  else
    cout << "no se lo encontro en la lista " << endl;

  x = 5 ; cout << endl << "Busca elemento x = " << x << endl;
  p = busca_ord (S,x);
  if (p != S.end () )
    cout << "se lo encontro en la lista " << endl;
  else
    cout << "no se lo encontro en la lista " << endl;

  inserta_ord (S,-758);
  inserta_ord (S, 364);
  suprime_ord (S,   0);
  inserta_ord (S,   5);
  suprime_ord (S,   3);
  cout << "Lista ordenada actual S: "; printl (S);

  S.clear ();
  cout << "Lista despues de un clear S: "; printl (S);

  cout << endl;
  return 0;
}

//--------------------------------------------------------------------

Generated by GNU Enscript 1.6.6.