Ir al contenido principal

Programación en c++ : Listas dobles - Inserta, busca, elimina y muestra elementos

1.- Hacer un programa mediante listas enlazadas, donde inserte, busque y elimine elementos de una lista.





#include<iostream.h>
#include<conio.h>
#include<stdio.h>
struct nodo{
            int nro;
            struct nodo *sgte;
            struct nodo *ant;
            };
typedef struct nodo *Tlista;
void insertar(Tlista&, int);
void insertarfinal(Tlista&,int);
bool buscar(Tlista&,int,int&);
void eliminarlista(Tlista&);
void imprimir(Tlista);
void main()
{Tlista lista=NULL;
 int valor, opc,pos;
 bool R;
 do
 {
 cout<<"1. Insertar al Inicio"<<endl;
 cout<<"2. Insertar al Final"<<endl;
 cout<<"3. Busqueda"<<endl;
 cout<<"4. Eliminar Lista"<<endl;
 cout<<"5. Ver Lista"<<endl;
 cout<<"6. Salir"<<endl;
 cout<<"Ingrese Opcion:";
 cin>>opc;
 char opc0='s';
 switch(opc)
 {
 case 1: while(opc0=='s' || opc0=='S')
         {
         cout<<"Ingrese valor al inicio:";
         cin>>valor;
         insertar(lista, valor);
         cout<<endl;
         cout<<"Seguir ingresando [s/n]: ";cin>>opc0;
         }
         break;
 case 2: while(opc0=='s' || opc0=='S')
         {cout<<"Ingrese valor al final:";
         cin>>valor;
         insertarfinal(lista,valor);
         cout<<endl;
         cout<<"Seguir ingresando [s/n]: ";cin>>opc0;
         }
         break;
 case 3: cout<<"***Buscar un Valor de la lista***"<<endl;
         cout<<"Ingrese valor a buscar:";
         cin>>valor;
         imprimir(lista);
         R= buscar(lista,valor,pos);
         if(R==true)
         {cout<<"El valor buscado es:"<<valor;
          cout<<"Posicion:"<<pos;
          getch();
          }
          else
          {cout<<"Valor buscado es:"<<valor;
          cout<<"Posicon: Ninguna";
          }
         break;
 case 4: cout<<"***Elementos***";
         eliminarlista(lista);
         getch();
         break;
 case 5: cout<<"Listado"<<endl;
         imprimir(lista);
         getch();
         break;
 }
 clrscr();
 }while(opc!=6);
 }
 void insertar(Tlista &lista, int valor)
 {Tlista nuevo, actual;
  nuevo=new(struct nodo);
  nuevo->nro=valor;
  actual=lista;
  if(lista==NULL)
  {
   lista=nuevo;
   lista->ant=NULL;
   lista->sgte=NULL;
   }
   else
   {
    nuevo->sgte=lista;
    nuevo->ant=lista->ant;
    lista->ant=nuevo;
    lista=nuevo;
    }
  }
  void insertarfinal(Tlista &lista, int valor)
  {Tlista nuevo, actual;
   nuevo=new(struct nodo);
   nuevo->nro=valor;
   actual=lista;
   if(lista==NULL)
   {
    lista=nuevo;
    lista->ant=NULL;
    lista->sgte=NULL;
    }
    else
    {
     while(actual->sgte!=NULL)
     {
     actual=actual->sgte;
     }
     nuevo->sgte=actual->sgte;
     actual->sgte=nuevo;
     nuevo->ant=actual;
     }
   }
   void eliminarlista(Tlista &lista)
   {
   lista=NULL;
   }

  bool buscar(Tlista &lista, int valor, int&pos)
  { Tlista aux=lista;
    pos=0;
    while(aux!=NULL)
    {
     if(aux->nro==valor)
     {
     return true;
    }
    aux=aux->sgte;
    pos++;
    }
    return false;
  }
  void imprimir(Tlista lista)
  {Tlista aux = lista;
   int i = 0;
   while (lista != NULL)
   {
cout<<"N["<<i<<"] = {"<<lista->nro<<"}, ";
      lista = lista->sgte;
      i++;
   }
   if(i==0)
   {
cout<<"\nLa lista no tiene datos ... Press Enter";
   }
}

Comentarios

Entradas más populares de este blog

Mostrar y Modificar una tabla en Netbeans

Continuando con el ejercicio anterior, ahora veremos como modificar una tabla creada en SLQ Server  desde Netbeans. Para ello sólo adicionaremos algunos códigos, en este caso siguiendo con el ejercicio anterior sólo agregamos en el index.jsp lo siguiente: <td align="center"><a href ="frmProductos.jsp?txtpara=M&txtid = <%= objpro.getcodigo() %>"><img src="images/upd.gif"></a></td> En el java class Productos, aparte de crear el método mostrar, crearemos dos métodos más: Método para Buscar y para Modificar, pero primero antes de todo declaramos nuestras variables como privado, creamos un constructor y luego aplicamos un Getter and Setter como se muestra en las siguientes imágenes:   Después de haber hecho el paso anterior, creamos un nuevo jsp la cual llamaremos frmProductos y escribimos la siguiente codificación: Luego creamos otro package que llamaremos Servlet, dentr...

Programación en c++ : Arreglos - Ordenar elementos y eliminar repetidos

1.- Hacer un programa usando arreglos, que nos permita ingresar n cantidad de elementos, luego nos deberá mostrar una lista ordenada de los elementos. Si en la lista se repiten algunos números, hacer que nos muestre una nueva lista sin los números repetidos.  #include<iostream.h> #include<conio.h> #define MAX 50 void leer(int,int[]); void ordenar(int, int[]); void listaordenar(int,int[]); void main() {int n, x[MAX],j,k,i;  cout<<"Ingresar limite:";  cin>>n;  leer(n,x);  ordenar(n,x);  cout<<"La lista ordenada es:"<<endl;  listaordenar(n,x);  cout<<"Presione cualquier tecla para eliminar...."<<endl;  getch();  for(i=0;i<n;i++)   for(j=i+1;j<n;j++)    if(x[i]==x[j])    {for(k=j;k<n-1;k++)     x[k]=x[k+1];     n=n-1;     j=i;    }  cout<<endl<<"La nueva li...

Programación en c++ : Matriz - Calcular mayor de la matriz

1.- Hacer un programa que permita ingresar n datos de una matriz y calcular el mayor de la matriz. #include<iostream.h> #include<conio.h> #define lim 50 void main() {int i,j,a[lim][lim],fila,col,  may=a[0][0];  clrscr(); do {cout<<"Ingresar limite de la fila:";  cin>>fila; }while(fila<=0); do {cout<<"Ingesar limite de la columna:";  cin>>col; }while(col<=0); gotoxy(10,7); cout<<"Ingresar Elementos de la matriz\n\n"; for(i=0;i<fila;i++) for(j=0;j<col;j++) {cout<<"a["<<i<<"]"<<"["<<j<<"]";  cin>>a[i][j]; } for(i=0;i<fila;i++) for(j=0;j<col;j++) if(a[i][j]>may) may=a[i][j]; clrscr(); gotoxy(10,7); cout<<"Elementos de la matriz\n\n"; for(i=0;i<fila;i++) for(j=0;j<col;j++) {cout<<a[i][j];  cout<<"\n"; } clrscr(); gotoxy(10,20); cout...