Ir al contenido principal

Programación en c++: Listas Dobles - Insertar, eliminar, modificar, repetidos y burbuja





#include<iostream.h>
#include<conio.h>
struct nodo{
     int nro;
    struct nodo*sgte;
    };

typedef struct nodo*TLista;
void insertaAlInicio(TLista &,int);
void insertaAlFinal(TLista &,int);
void insertaEnPosicion(TLista &, int, int);
void eliminaElemento(TLista &, int);
void eliminaLista(TLista &);
void eliminaRepetidos(TLista);
void burbuja(TLista);
void imprimir(TLista);
void modificar(TLista &,int, int);
void main(void)
{
clrscr();
getche();
TLista lista=NULL;
int opc,valor,pos,ps;
do
{
cout<<"PROGRAMA QUE REALIZA FUNCIONES PRINCIPALES CON LISTAS ENLAZADAS "<<endl;
cout<<"--------------------------------------------------------------- "<<endl<<endl;
cout<<"****  MENU ****"<<endl;
cout<<"1. Inserta al inicio"<<endl;
cout<<"2. Inserta al final"<<endl;
cout<<"3. Inserta en una posicion "<<endl;
cout<<"4. Listado"<<endl;
cout<<"5. Elimine elemento que ud desee: "<<endl;
cout<<"6. Elimina toda la lista "<<endl;
cout<<"7. Elimina elementos repetidos  "<<endl;
cout<<"8. Ordena por burbuja "<<endl;
cout<<"9. Modifcar elemento"<<endl;
cout<<"10. Salir"<<endl;
cout<<"ingrese su opcion: ";
cin>>opc;

switch(opc)
{
case 1: clrscr();cout<<"ingrese valor a insertar al inicio: \n";
cin>>valor;
insertaAlInicio(lista,valor);
break;
case 2: clrscr();cout<<"ingrese valor a insertar al final: \n";
cin>>valor;
insertaAlFinal(lista,valor);
break;
case 3: clrscr();cout<<"valor a insertar: \n";
cin>>valor;
cout<<"Posicion:\n ";cin>>pos;
insertaEnPosicion(lista,valor,pos);
break;
case 4: clrscr();cout<<endl<<"Listado \n"<<endl;
imprimir(lista) ;
break;
case 5: clrscr();cout<<endl<<"Elimina elemento :"<<endl;
        cout<<"valor del elemento ";cin>>valor;
eliminaElemento(lista, valor);
break;
case 6: clrscr();cout<<endl<<"..Elimina la lista "<<endl;
        eliminaLista(lista);
break;
case 7: clrscr();cout<<endl<<"..Eliminando"<<endl;
        eliminaRepetidos(lista);
        break;
case 8: clrscr();cout<<endl<<"Lista ordenada "<<endl;
burbuja(lista);
imprimir(lista);break;
case 9:clrscr();cout<<"Ingrese la posicion a modificar:"<<endl;
       cin>>ps;
       cout<<"Ingrese el valor a ingresar:"<<endl;
       cin>>valor;
       modificar(lista,valor,ps);break;
      }
   }while(opc!=10);
}

void imprimir(TLista lista)
{ while (lista!=NULL)
   {cout<<lista->nro<<endl;
   lista=lista->sgte;
   }
cout<<endl;
}

void insertaAlInicio(TLista &lista, int valor)
{
TLista q;
q=new(struct nodo);
q->nro=valor;
q->sgte=lista;
lista=q;
}

void insertaAlFinal(TLista &lista, int valor)
{
TLista t, q=new(struct nodo);
q->nro=valor;
q->sgte=NULL;
if(lista==NULL)lista=q;
else {t=lista;
      while (t->sgte!=NULL) t=t->sgte;
      t->sgte=q;
      }
}

void insertaEnPosicion(TLista &lista, int valor, int pos)
{
TLista q,t;
int i;
q=new (struct nodo);
q->nro=valor;
if (pos==1) {q->sgte=lista;lista=q;}
else {t=lista;
      for(i=1;t!=NULL;i++)
      { if(i==pos-1) { q->sgte=t->sgte;
      t->sgte=q;
      return; }

      t=t->sgte;
      }
   }
cout<<"ERROR posicion erronea"<<endl;
}

void eliminaElemento(TLista & lista , int valor)
{
TLista p,ant;
p=lista;
while (p!=NULL)
{ if (p->nro==valor)
 { if(p==lista)
lista=lista->sgte;
else
ant->sgte=p->sgte;
delete(p);
return;
}
ant=p;
p=p->sgte;
}
 }

void eliminaLista(TLista &lista)
{
TLista p;
while (lista!=NULL)
 { p=lista;
lista=lista->sgte;
delete(p);
}
 }

void eliminaRepetidos(TLista lista)
{ TLista q,p,r,ant;
  int num;
  q=lista;
  while(q!=NULL)
  { num=q->nro;
    ant=q;
    r=q->sgte;
    while(r!=NULL)
    { if(num==r->nro)
      { ant->sgte=r->sgte;
      cout<<"Eliminando..."<<num<<endl;
      p=r;
      r=r->sgte;
      delete(p);
      }
    else { ant=r;
  r=r->sgte;
  }
    r=r->sgte;
    } //fin while
    q=q->sgte;
    } //fin while
  }

void burbuja(TLista lista)
{
TLista actual,siguiente,marca;
int t;
marca=NULL;
while(marca!=lista->sgte)
{ actual=lista;
  siguiente=actual->sgte;
  while(siguiente!=marca)
  { if(actual->nro>siguiente->nro)
     { t=siguiente->nro;
       siguiente->nro=actual->nro;
       actual->nro=t;
       }
     actual=actual->sgte;
     siguiente=actual->sgte;
     }
     marca=actual;
     }
  }//fin burbuja

void modificar(TLista &lista,int v,int ps)
{ TLista q,sgte;
  q=lista;
  int i;
  for(i=0;i<ps-1&&q->sgte!=NULL;i++)
     q=q->sgte;
     q->nro=v;
}

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"<...

Programacion: Arreglos con estructuras - ordenamientos

1.- Se pide realizar un ordenamiento de artículos, para ello se debe ingresar n artículos y ordenarlos por su monto de inversión. struct articulo {char codigo[10];  char producto[20];  float preciocompra;  float monto;  int cantidad;  }  #include<iostream.h> #include<string.h> #include<conio.h> #define MAX 50 struct articulo {char codigo[10];  char producto[20];  float preciocompra;  float monto;  int cantidad;  };  void leer(int, struct articulo[]);  void montodeinversion(int, struct articulo[]);  void ordenmonto(int, struct articulo[]);  void listado(int, struct articulo[]);  void main()  {int n;   struct articulo Art[MAX];   cout<<"Cantidad de articulos que desea poner:";   cin>>n;   leer(n,Art);   montodeinversion(n,Art);   ordenmonto(n,Art);   cout<<"productos ordenados por su cantidad de mont...