Ir al contenido principal

Programacion: Lista Doble - Multiplica pares, divide impares

1.- DADA UNA LISTA DOBLE MULTIPLIQUE POR DOS TODOS LOS ELEMENTOS QUE    SON PARES, Y DIVIDA ENTRE DOS TODOS LOS ELEMENTOS QUE SON IMPARES





#include<conio.h>
#include<iostream.h>
struct nodo
{
 int nro;
 struct nodo* sgte;
 struct nodo* ante;
};
typedef struct nodo* Tlista;
void InsertaAlInicio(Tlista&,int);
void InsertaAlFinal(Tlista&,int);
void EliminaAlInicio(Tlista&);
bool Busqueda(Tlista,int,int&);
void EliminarLista(Tlista&);
void Imprimir(Tlista);
void EliminaElemento(Tlista&,int);
void Ordenar(Tlista&);
void main(void)
{
 Tlista lista=NULL;
 int opc,valor,pos;
 bool R;
 do
 {
  cout<<"======================================\n";
    cout<<"=============== MENU =================\n";
  cout<<"======================================\n";
  cout<<"| 1.- Inserta al inicio              |\n";
  cout<<"| 2.- Inserta al final               |\n";
  cout<<"| 3.- Busqueda                       |\n";
  cout<<"| 4.- Eliminar Lista                 |\n";
  cout<<"| 5.- Listado [Izquierda - Derecha]  |\n";
  cout<<"| 6.- Elimina al inicio              |\n";
  cout<<"| 7.- Elimina Elemento               |\n";
  cout<<"| 8.- Ordenar Lista y mostrar los elementos mltiplicados y divididos                  |\n";
  cout<<"| 9.- Salir                          |\n";
  cout<<"======================================\n";
  cout<<"======================================\n";
  cout<<"IngreseOpcion: ";cin>>opc;
  char opc0='s';
  switch(opc)
  {
   case 1:
    while(opc0=='s' || opc0=='S')
            {
     cout<<"=============================\n";
     cout<<"Numero : ";cin>>valor;
               if(valor%2==0)
        InsertaAlInicio(lista,valor*2);
               else
                InsertaAlInicio(lista,valor/2);
               cout<<"Seguir ingresando [s/n]: ";cin>>opc0;
          }
    break;
   case 2:
          while(opc0=='s' || opc0=='S')
          {
             cout<<"=============================\n";
     cout<<"Numero : ";cin>>valor;
               if(valor%2==0)
      InsertaAlFinal(lista,valor*2);
               else
                InsertaAlFinal(lista,valor/2);
     cout<<"Seguir ingresando [s/n]: ";cin>>opc0;
            }
    break;
   case 3:
    cout<<"=============================\n";
    cout<<"Ingrese el valor a buscar: ";cin>>valor;
    cout<<"\nListado\n";
    Imprimir(lista);
    R=Busqueda(lista,valor,pos);
    if(R==true)
    {
     cout<<"\n\tValor buscado: "<<valor;
     cout<<"\n\tEstado       : Existe";
     cout<<"\n\tPosicion     : "<<pos;getch();
    }
    else
    {
     cout<<"\n\tValor buscado: "<<valor;
     cout<<"\n\tEstado       : No Existe";
     cout<<"\n\tPosicion     : Ninguna";
    }
    break;
   case 4:
    cout<<"=============================\n";
    cout<<"\nElementos\n";
    EliminarLista(lista);getch();
    break;
   case 5:
    cout<<"=============================\n";
    cout<<"\nListado\n";
    Imprimir(lista);getch();
    break;
   case 6:
    cout<<"=============================\n";
    EliminaAlInicio(lista);
    getch();
    break;
   case 7:
    cout<<"=============================\n";
    cout<<"Ingrese el valor a eliminar: ";cin>>valor;
            cout<<"\nElmetodo eliminara todos los elementos que \ncoincidan con el valor ingresado ...\n";
    EliminaElemento(lista,valor);
    getch();
          break;
   case 8:
    cout<<"=============================\n";
            cout<<"\nLista Ordenada\n";
    Ordenar(lista);
            Imprimir(lista);getch();
            break;
  } //FIN DEL SWITCH
  clrscr();
 }while(opc!=9);
}

void InsertaAlInicio(Tlista&lista,int valor)
{
 Tlista pos,nu;
   nu  = new (struct nodo);
   nu->nro = valor;
   pos = lista;
 if(lista == NULL)
   {
  lista = nu;
      lista->sgte = NULL;
      lista->ante = NULL;
   }
 else
   {
  nu->sgte = lista;
  nu->ante = lista->ante;
  lista->ante = nu;
      lista = nu;
   }
}
void InsertaAlFinal(Tlista&lista,int valor)
{
 Tlista pos,nu;
   nu  = new (struct nodo);
   nu->nro = valor;
   pos = lista;
   if(lista == NULL)
   {
  lista = nu;
      lista->sgte = NULL;
      lista->ante = NULL;
   }
 else
   {
  while (pos->sgte!= NULL) { pos = pos->sgte; }
  nu->sgte = pos->sgte;
  pos->sgte = nu;
      nu->ante = pos;
   }
}
bool Busqueda(Tlista lista,int num,int& pos)
{
 Tlista aux = lista;
 pos=0;
   while (aux != NULL)
   {
  if (aux->nro == num)
      {
   return true;
      }
  aux = aux->sgte;
  pos++;
   }
 return false;
}
void EliminarLista(Tlista& lista)
{
 lista = NULL;
}
void Imprimir(Tlista lista)
{
 Tlista aux = lista;
   int i = 0;
   while (lista != NULL)
   {
  cout<<"["<<i<<"] = "<<lista->nro<<endl;
  lista = lista->sgte;
  i++;
   }
 if(i==0)
   {
  cout<<"\nLa lista no tiene datos ... PressEnter";
   }
}
void EliminaAlInicio(Tlista& lista)
{
  if(lista!=NULL)  //Siempre que la lista tenga un valor
   {
  lista=lista->sgte;
      cout<<"\nEliminado ... PressEnter ";
   }
 else
   {
  cout<<"\nLa lista no tiene datos ... PressEnter ";
   }
}
void EliminaElemento(Tlista&lista,int ele)
{
 Tlista aux=lista;
 bool existe=false;
 while (aux!= NULL)
   {
  if (aux->nro == ele)
    {
     if(aux->ante == NULL &&aux->sgte == NULL)//Si el elemento se encuentra al inicio y es el unico
    {
    aux = NULL;
        lista = aux;
            existe=true;
        goto fin;
     }
     else
      {
        if(aux->ante == NULL)   //Si el elemento está al inicio
    {
     lista->sgte->ante = NULL;
           lista = lista->sgte;
    }
        else
        {
     if(aux->sgte == NULL) //Si el elemento se encuentra al final
     {
      aux->ante->sgte = NULL;
      aux = aux->ante;
     }
     else                 //Si el elemento se encuentra en otra posición
           {
      aux->ante->sgte = aux->sgte;
      aux->sgte->ante = aux->ante;
            aux = aux->ante;
     }
        }
     }
     existe = true;
  }
  aux = aux->sgte;
   }
 fin:
 if(existe)
   {
  cout<<"\n¡¡ELEMENTO ELIMINADO!! ... PressEnter";
   }
 else
   {
  cout<<"\n¡El Elemento NO EXISTE en la Lista! ... PressEnter";
   }
}
void Ordenar(Tlista& lista)
{
 Tlista aux1,aux2;
 if(lista!=NULL)
   {
  aux1 = lista, aux2 = lista->sgte;
  int cambiar;
  while (aux1 != NULL)
      {
   aux2 = aux1->sgte;
   while (aux2 != NULL)
   {
    if (aux1->nro>= aux2->nro)
    {
     cambiar = aux1->nro;
     aux1->nro = aux2->nro;
     aux2->nro = cambiar;
    }
    aux2 = aux2->sgte;
   }
   aux1 = aux1->sgte;
  }
   }
}

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();  }