Ir al contenido principal

Programacion: Lista - Busca, invierte

1.-  Programa que busca elemento , invierte lista y muestra elemento central





#include<iostream.h>
#include<conio.h>
struct nodo{
     int nro;
     struct nodo *sgte;
            struct nodo *ant;
    };
typedef struct nodo *lisdo;
void insertain(lisdo &,int);
void insertafi(lisdo &,int);
int busca(lisdo,int,int &);
void elimini(lisdo &);
void elimlista(lisdo &);
void elimelem(lisdo &,int);
void verlis(lisdo);
void invertir(lisdo);
void media(lisdo);
void sure(lisdo);
void asen(lisdo &);
void insertain(lisdo &lista,int elem)
{
 lisdo l;
 l=new(struct nodo);
 l->nro=elem;
 if(lista==NULL)
   {
    lista=l;
    lista->sgte=NULL;
    lista->ant=NULL;
   }
 else
   {
    l->sgte=lista;
    l->ant=NULL;
    lista->ant=l;
    lista=l;
   }
}
void insertafi(lisdo &lista,int elem)
{
 lisdo l,aux;
 l=new(struct nodo);
 l->nro=elem;
 aux=lista;
 if(lista==NULL)
   {
    lista=l;
    lista->sgte=NULL;
    lista->ant=NULL;
   }
 else
   {
    while(aux->sgte!=NULL)
    {
     aux=aux->sgte;
    }
    l->sgte=NULL;
    aux->sgte=l;
    l->ant=aux;
   }
}
int busca(lisdo lista,int elem,int &pos)
{
 //int b;
 pos=0;
 lisdo aux;
 aux=lista;
 while(aux->sgte!=NULL)
 {
  if(aux->nro==elem)
    {
     return 1;
    }
  aux=aux->sgte;
  pos++;
 }
 return 0;
}
void elimini(lisdo &lista)
{
 if(lista!=NULL)
   {
    lista=lista->sgte;
    cout<<"!! primer elemento eliminado ¡¡";
   }
 else
   cout<<"¡¡¡ lista sin elementos !!!";
}
void elimlista(lisdo &lista)
{
 if(lista!=NULL)
   {
    lista=NULL;
    cout<<"!! lista bacia ¡¡";
   }
 else
   cout<<"!! lista sin elementos ¡¡";
}
void elimelem(lisdo &lista,int elem)
{
 lisdo aux;
 aux=lista;
 if(lista!=NULL)
   {
    while(aux!=NULL)
    {
     if(aux->nro==elem)
       {
 if(aux->sgte==NULL&&aux->ant==NULL)
   {
    aux=NULL;
           lista=aux;
   }
 else
   {
    if(aux->ant==NULL)
      {
              //lista->sgte->ant=NULL;
       lista=lista->sgte;
      }
    else
      if(aux->sgte==NULL)
        {
  aux->ant->sgte=NULL;
                aux=aux->ant;
        }
    else
      {
       aux->ant->sgte=aux->sgte;
       aux->sgte->ant=aux->ant;
              aux=aux->ant;
      }
   }
       }
    aux=aux->sgte;
    }
    cout<<"!! elemento eliminado ¡¡";
   }
 else
   cout<<"!! lista sin elementos ¡¡";
}
void verlis(lisdo lista)
{
 lisdo aux;
 aux=lista;
 if(lista!=NULL)
   {
    while(aux!=NULL)
    {
     cout<<aux->nro<<" - ";
     aux=aux->sgte;
    }
   }
 else
   cout<<"!! lista sin elementos ¡¡";
}
void invertir(lisdo lista)
{
 lisdo aux;
 aux=lista;
 if(lista!=NULL)
   {
    while(aux->sgte!=NULL)
    {
     aux=aux->sgte;
    }
    while(aux!=NULL)
    {
     cout<<aux->nro<<" - ";
     aux=aux->ant;
    }
   }
 else
   cout<<"!! sin elementos ¡¡";
}
void media(lisdo lista)
{
 int m,n=0,i=0,v;
 lisdo aux;
 aux=lista;
 while(aux->sgte!=NULL)
 {
  aux=aux->sgte;
  n++;
 }
 while(aux->ant!=NULL)
 {
  aux=aux->ant;
  i++;
  if(i==n/2)
    v=aux->nro;
 }
  cout<<v;
}
void sure(lisdo lista)
{
 lisdo aux1,aux2;
 aux1=lista;
 aux2=aux1->sgte;
 while(aux1!=NULL)
 {
  aux1->nro=((aux1->nro)+2);
  aux1=aux2->sgte;
  aux2->nro=((aux2->nro)-2);
  aux2=aux1->sgte;
 }
}
 void asen(lisdo &lista)
 {
  int may;
  lisdo aux1,aux2;
  if(lista!=NULL)
    {
     aux1=lista;
     aux2=lista->sgte;
     while(aux1!=NULL)
     {
      aux2=aux1->sgte;
      while(aux2!=NULL)
      {
       if(aux1->nro>aux2->nro)
  {
   may=aux1->nro;
   aux1->nro=aux2->nro;
          aux2->nro=may;
  }
       aux2=aux2->sgte;
      }
      aux1=aux1->sgte;
     }
    }
 }


void main()
{
 lisdo lista=NULL;
 int elem,pos,x,y,i;
 char opc;
 do
 {
  clrscr();
  cout<<"**********MENU********\n";
  cout<<"1.-INSERTAR ELEMENTO AL INICIO\n";
  cout<<"2.-INSETAR ELEMENTO AL FINAL\n";
  cout<<"3.-BUSCAR ELEMENTO\n";
  cout<<"4.-ELIMINAR PRIMER ELEMENTO\n";
  cout<<"5.-ELIMINAR ELEMENTO\n";
  cout<<"6.-ELIMINAR LISTA\n";
  cout<<"7.-VER ELEMENTOS DE LA LISTA\n";
  cout<<"8.-LISTA ORDENADA ASENDENTEMENTE\n";
  cout<<"9.-SALIR\n";
  cout<<"INGRESE SU OPCION: ";opc=getche();
  switch(opc)
 {
  case '1':clrscr();
     cout<<"numeros de elementos: ";cin>>x;
    for(i=0;i<x;i++)
      {
       cout<<i+1<<".-elemento: ";cin>>y;
                     insertain(lista,y);
      }
    break;
  case '2':clrscr();
    cout<<"numero de elementos: ";cin>>x;
    for(i=0;i<x;i++)
      {
       cout<<i+1<<".-elemento: ";cin>>y;
                     insertafi(lista,y);
      }
    break;
  case '3':clrscr();
    cout<<"Ingrese elemento a buscar: ";cin>>x;
    y=busca(lista,x,pos);
    if(y==1)
      {
                     cout<<"Elemento en la posicion "<<pos;
      }
    else
      cout<<"Elemento no existe ";
    break;
  case '4':clrscr();
    elimini(lista);
    break;
  case '5':clrscr();
    cout<<"Elementos a buscar";cin>>x;
    elimelem(lista,x);
    break;
  case '6':clrscr();
    elimlista(lista);
    break;
 case '7':clrscr();
   cout<<"******LISTA INVERTIDA********\n";
   verlis(lista);
   cout<<"\n\n*******LISTA DE ELEMENTOS********\n";
   invertir(lista);
   cout<<"\n********LA MEDIA ES **********\n";
   media(lista);
   sure(lista);
   cout<<"\n******LISTA DE ELEMENTOS********\n";
   verlis(lista);
   break;
  case '8':clrscr();
    cout<<"******LISTA DE ELEMENTOS********\n";
    verlis(lista);
                  cout<<endl<<endl;
    cout<<"******LISTA DE ELEMENTOS ORDENADOS********\n";
    asen(lista);
    verlis(lista);
    break;                               
 }
  getch();
 }while(opc!='9');
}

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