Как сделать динамический массив указателем на связанные списки? - PullRequest
0 голосов
/ 22 декабря 2018

Меня попросили создать динамический массив, и каждый его случай указывает на список ссылок, содержащий полином.

Я пытался сделать все это, но моя программа не работает, я испробовал так много идей, ноНичего не работает, я думаю, что проблема в части распределения.программа:

#include <iostream>

using namespace std;
struct node{
    int coef;
    int degre;
    node *next;
};

void insert(node *&h,int a,int b)
{
    node *t;
    t=h;
    node*n;
    n=new node;
    n->coef=a;
    n->degre=b;
    n->next=NULL;

    if(h=NULL)
    {
        h=n;
    }
    else
    {
        while(t->next!=NULL)
        {
            t=t->next;
        }
        t->next=n;
    }
}

void display(node *&h,int i)
{
    node *t;
    t=h;
    while(t!=NULL)
    {
        cout<<"polynome["<<i<<"] = "<<t->coef<<"X"<<t->degre<<"+";
    }
    cout<<endl;
}

эта функция предназначена для организации полинома на основе коэффициента

void organize(node *h)
{
    int max;
    node *t;
    node *t2;
    t=h;
    while(t->next!=NULL)
    {
        t2=t->next;
        while(t2->next)
        {
            if(t->coef > t2->coef)
            {
                max=t->coef;
            }
            else
            {
                max=t2->coef;
            }
            t2=t2->next;
        }
        t=t->next;
    }
}

main ():

int main()
{
    int n,c;
    int a,b;
    // n :size of array of pointers
    cout<<"n = ";
    cin>>n;

    node **t;
    t=new node*[n];
    for(int i=0;i<n;i++)
    {
        //initialize pointer to null
        t[i]=NULL;
        //c is the size of link lists
        cout<<" c = ";
        cin>>c;
        for(int j=0;j<c;j++)
        {
            t[i]=new node;
            cout<<"enter the coefficient : ";
            cin>>a;
            cout<<"enter the degree : ";
            cin>>b;
            insert(t[i],a,b);
        }
    }

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<c;j++)
        {
            display(t[i],i);
        }
    }

    for(int i=0;i<n;i++)
    {
        delete[]t[i];
    }
    delete[]t;

    return 0;
}  
...