como sacar cualquier elemento de lista

Iniciado por karmi, 11 Noviembre 2010, 04:50 AM

0 Miembros y 1 Visitante están viendo este tema.

karmi

tengo un problema, se que tengo que recorrer mi lista para encontrar el numero que debo sacar pero no  entiendo como, si tengo que sacar por decir el numero que le indique; podrian ayudarme...dejo el codigo

#include <iostream.h>
#include <windows.h>
#include <conio.h>

struct Nodo
{
   int dato;
   Nodo *sig;
};

class Lista
{
private:
   Nodo *inicio;
public:
   Lista ()//constructor
   {
      inicio=NULL;
   }

   void insertar(int d)
   {
      Nodo *nuevo;
      nuevo = new Nodo();
      nuevo->dato=d;
      nuevo->sig=NULL;

      if (inicio == NULL)
      {
         inicio = nuevo;
      }
      else
      {
         Nodo *pos, *ant;         
         pos = inicio;
         ant = inicio;
         while(nuevo->dato > pos->dato)
         {
            ant = pos;
            pos = pos->sig;
            if (pos == NULL)
            {
               break;
            }
         }
         
         if (pos == NULL)//nuevo se agrega al final de la lista
         {
            ant->sig = nuevo;
         }
         else
         {
            if(pos == inicio)
            {
               nuevo->sig = pos;
               inicio = nuevo;
            }
            else
            {
               ant->sig =  nuevo;
               nuevo->sig = pos;
            }
         }
      }

   }

   void Mostrar()
   {
         Nodo *temp;
         temp = inicio;

         if (temp!=NULL)
         {
            do
            {
               cout << temp->dato << endl;
               temp = temp->sig;
            }while(temp!=NULL);
         }
   }
}
+++++++++++++++++++++++
void eliminar() ES AQUI DONDE NO LE HALLO
+++++++++++++++++




void main (void)
{
   Lista numeros;
   int op, n;
   do
   {
      system("cls");
      cout << "M E N U   L I S T A   O R D E N A D A" << endl<<endl;
      cout << "1.- Meter un numero a la lista"<< endl;
      cout << "2.- Sacar un numero de la lista"<< endl;
      cout << "3.- Mostrar la lista"<< endl;
      cout << "4.- Salir"<< endl << endl;

      cout << "Elige una opcion-> ";
      cin >> op;
      
      system("cls");
      switch(op)
      {
      case 1:
         cout << "Introduce el numero: ";
         cin >> n;
         numeros.insertar(n);
         break;
      case 2:
         numeros.eliminar();
         cout << "Numero eliminado de la lista"<<endl;
         break;
      case 3:
         cout << "Los numeros son: " << endl;
         numeros.Mostrar();
         break;
      default:
         cout << "Bye!!!"<<endl;
      }
      getch();
   }while(op>=1 && op<=3);
   
}

agradeceria me explicaran como.gracias

Akai

Psss... El problema aqui es que no se entiende qué tienes que hacer. No es lo mismo buscar un elemento con valor X y sacarlo (a), que sacar el elemento número X en la lista (b).

En ambos casos es bastante sencillo:
A) buscas si existe ese elemento recorriendo la lista, y si está, lo extraes.
B) recorres X elementos de la lista, y extraes.

Unos cuantos apuntes a parte de tu duda:
a) a tu clase le falta el destructor.
b) utiliza la etiqueta GeShi del foro para colgar código. De la forma que lo has puesto es dificil de leer.
c) no utilices conio.h para getch (), conio.h es una biblioteca obsoleta, y en vez de getch puedes usar cin.get(), entre otras cosas. (De paso te aconsejo que te mires esto: http://foro.elhacker.net/programacion_cc/ejecutar_programas_en_windows_sin_necesidad_de_pausas_system_pause_etc-t306837.0.html)