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

Lenguaje de Programacion en Java: Ecuación de primer grado

public class Main {     public static void main(String[] args) {         float x,a,e;                   Scanner teclado = new Scanner(System.in);         System.out.println("Coeficiente de X:");         x=teclado.nextInt();         System.out.println("Término independiente:");         a=teclado.nextInt();         if(a==0)           System.out.println("No es una ecuación de primer grado");           else         {              e=-a/x;              System.out.println("La raíz es=" +e);         }                                     } ...

Programacion: Arbol binario - Programacion en c++

1.- Hacer un programa que permita buscar un elemento, el elemento mayor, el elemento menor y el menor de los mayores de un árbol binario. #include <iostream.h> #include <conio.h> struct nodo     {      int valor;      struct nodo* izq;      struct nodo* der;     }; typedef struct nodo *ABB; void inserta(ABB& ,int); void preorden(ABB); void postorden(ABB); void enorden(ABB); void verarbol(ABB,int); int buscar(ABB,int); int buscarmayor(ABB); int buscarmenor(ABB); void podar(ABB&,int); void main() { ABB arbol=NULL; ABB subarbol=NULL; int n,x,opc,a;   do     {      cout<<"menu principal"<<endl;      cout<<"1.ingresar elementos"<<endl;      cout<<"2.pre orden"<<endl;      cout<<"3.mostrar hojas"<...

Programación en c++ : While - series: límite del numerador

1.- Hacer un programa que nos permita ingresar el límite del numerador hasta donde queremos que se realice la suma, sólo el numerador tendrá el límite, el denominador no cambiará, por ejemplo; 1/2 , 2/2, 3/2, 4/2 ..... #include<iostream>  #include<conio.h> int main()  {  int num=0,suma=0,denominador=2,limite;  clrscr();  cout<<"Ingrese el limite del numerador: ";  cin>>limite; while (num<=limite)  {  cout<<num<<"/"<<denominador<<endl;  suma=suma+num;  num=num+1; }  cout<<"Suma total: "<<suma<<"/"<<denominador<<endl;  getch();  }