none
ayuda listas dobles en c++

    Pregunta

  • necesito ayuda para resolver este ejercicio en c++

    cree dos listas doblemente enlazadas que contengan cada una un polinomio de n cantidades (x^3 +x^2 +x^n)

    y luego mostrar la suma de los polinomios en otra lista este es codigo que tengo y no se que este mal                             

    #include<conio.h>
    #include<stdlib.h>
    #include<iostream>

    using namespace std;

    struct nodo{
    int inf;
    int exp;
    struct nodo *der;
    struct nodo *izq;
    };
    struct nodo_1{
    int inf;
    int exp;
    struct nodo_1 *der;
    struct nodo_1 *izq;
    };
    struct nodo_2{
    int inf;
    int exp;
    struct nodo_2 *der;
    struct nodo_2 *izq;
    };

    nodo *cab = NULL; 
    nodo_1 *cabeza = NULL;
    nodo_2 *suma = NULL;

    struct nodo *crear(){
    int i,x,z;
      cout<<"digite la cantidad de terminos del polinomio";
      cin>>i;
      cout<<endl;
      cout<<"ingrese el primer valor del polinomio \n";
      cin>>x;
      cout<<"ingrese el exponente \n";
      cin>>z;
      nodo *cab = new nodo();
      cab->izq=NULL;
      cab->der=NULL;
      cab->inf=x;
      cab->exp=z;
      nodo *aux=new nodo();
      aux=cab;
      while(i>=2){
    nodo *aux1=new nodo();
      cout<<"ingrese el sigiente valor del polinomio \n";
      cin>>x;
          cout<<"ingrese el exponente \n";
          cin>>z;
        aux->der=aux1;
    aux1->inf =x;
    aux1->exp=z;
    aux1->der=NULL;
    aux1->izq=aux;
    aux=aux1;
    i=i-1;
      }
      cout<<"polinomio guardado con exito";
      return cab;
    }

    struct nodo_1 *crear_1(){
    int i,x,z;
      cout<<"digite la cantidad de terminos del segundo polinomio";
      cin>>i;
      cout<<endl;
      cout<<"ingrese el primer valor del segundo polinomio \n";
      cin>>x;
      cout<<"ingrese el exponente \n";
      cin>>z;
      nodo_1 *cabeza = new nodo_1();
      cabeza->izq=NULL;
      cabeza->der=NULL;
      cabeza->inf=x;
      cabeza->exp=z;
      nodo_1 *aux1 = new nodo_1();
      aux1=cabeza;
      while(i>=2){
    nodo_1 *aux2 = new nodo_1();
      cout<<"ingrese el sigiente valor del segundo polinomio \n";
      cin>>x;
          cout<<"ingrese el exponente \n";
          cin>>z;
        aux1->der=aux2;
        aux2->inf=x;
        aux2->exp=z;
        aux2->der=NULL;
        aux2->izq=aux1;
        aux1=aux2;
        i--;
      }
      cout<<"polinomio guardado con exito";
      return cabeza;
    }

    void sumar(nodo *cab, nodo_1 *cabeza, nodo_2 *suma){
    //nodo_2 *suma = new nodo();
    nodo_2 *aux3;
    nodo *aux1 = cab;
    nodo_1 *aux2;
    while(aux1!=NULL){
    aux2 = cabeza;
    while(aux2 != NULL){
    if(suma == NULL){
    if(aux1->exp == aux2->exp){
    suma->inf = aux1->inf + aux2->inf;
    suma->exp = aux1->exp;
    suma->der = NULL;
    suma->izq = NULL;
    aux3  = suma;
    }
    }
    else if(suma != NULL){
    aux3 = aux3->der;
    aux3->inf = aux1->inf + aux2->inf;
    aux3->exp = aux1->exp;
    aux3->der = NULL;
    aux3->izq = suma;
    aux3 = suma;
    }
    aux2 = aux2->der;
    }
    aux1 = aux1->der;
    }
    }

    void imprimir(nodo *cab){
      nodo *aux = new nodo();
      aux = cab;
      while(aux!=NULL){
    cout<<aux->inf;
    cout<<aux->exp;
    cout<<endl;
    aux=aux->der;
      }
    }

    main(){

    int op;
    do{
    cout<<"\t\t menu. \n";
    cout<<" 1. Ingresar el primer polinomio "<<endl;
    cout<<" 2. Ingreser el segundo polinomio "<<endl;
    cout<<" 3. Mostrar la suma de llos polinomios "<<endl;
    cout<<" 4. Salir \n";

    cout<<"opcion"<<endl;
    cin>>op;
    switch(op){
    case 1: nodo *aux;
    aux=crear();
    system("pause");
    break;
    case 2: nodo_1 *aux1;
    aux1=crear_1();
    system("pause");
    break;
    case 3: imprimir(cab);
    system("pause");
    break;
    case 4:  break;
    }
    system("cls");
    }while(op != 4);

    return 0;
    }

    gracias por su ayuda

    domingo, 24 de septiembre de 2017 3:18