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

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

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 - Buscar un elemento

1.- #include<iostream.h> #include<conio.h> #define MAX 100 void main() {int n, elem, i,a[MAX],band; clrscr(); cout<<"Limite:"; cin>>n; cout<<endl; for(i=0;i<n;i++) {cout<<"ELEMENTO ="; cin>>a[i]; } cout<<endl; cout<<"Ingrese elemento a buscar:"; cin>>elem; band=1; if(elem==a[i]) cout<<"Elemento encontrado"<<endl; if(band==0) cout<<"Elemento no encontrado"<<endl; getch(); }