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

Я написал следующий код для печати полинома 2, используя связанный список. Когда я запускаю эту программу, она ничего не печатает в выводе. А также, пожалуйста, скажите, передам ли я значение из main () таким образом, когда сновавызывается функция, при которой мои start1 и start2 будут изменены или они останутся NULL в соответствии с инициализацией.

#include <iostream>
using namespace std;
struct Node
{
    int coeff;
    int exp;
    Node* next;
};
void create_Poly(int x,  int y , Node *start)
{
    Node *temp,*ptr;
    if(start==NULL)
    {
        temp=new Node;
        temp->coeff=x;
        temp->exp=y;
        temp->next=NULL;
    }
    else
    {
            ptr = start;
            while(ptr->next!=NULL)
            {
                ptr=ptr->next;
            }
             temp = new Node;
             temp->coeff=x;
             temp->exp=y;
             temp->next=NULL;
             ptr->next=temp;
    }
    //return start;
}
void display(Node *start)
{
    Node * print = start;
    while(print!=NULL)
    {
        cout<<print->coeff<<"^"<<print->exp<<"+";
        print=print->next;
    }
    cout<<endl;
}
int main()
{
    struct Node * start1=NULL,*start2=NULL;
    create_Poly(3,2,start1);
    create_Poly(3,2,start1);
    create_Poly(3,2,start1);
    display(start1);
    create_Poly(4,2,start2);
    create_Poly(4,2,start2);
    display(start2);
}

1 Ответ

0 голосов
/ 22 сентября 2018

это сработало, как сказал @Scheff, старт никогда не меняется, я изменил старт, и вот код

#include <iostream>
using namespace std;
struct Node
{
    int coeff;
    int exp;
    Node* next;
};
void create_Poly(int x,  int y , Node *&start)
{
    Node *temp,*ptr;
    if(start==NULL)
    {
        temp=new Node;
        temp->coeff=x;
        temp->exp=y;
        temp->next=NULL;
        start=temp;
    }
    else
    {
            ptr = start;
            while(ptr->next!=NULL)
            {
                ptr=ptr->next;
            }
             temp = new Node;
             temp->coeff=x;
             temp->exp=y;
             temp->next=NULL;
             ptr->next=temp;
    }
    //return start;
}
void display(Node *start)
{
    Node * print = start;
    while(print!=NULL)
    {
        cout<<print->coeff<<"^"<<print->exp<<"+";
        print=print->next;
    }
    cout<<endl;
}
int main()
{
    struct Node * start1=NULL,*start2=NULL;
    create_Poly(3,2,start1);
    create_Poly(3,2,start1);
    create_Poly(3,2,start1);
    display(start1);
    create_Poly(4,2,start2);
    create_Poly(4,2,start2);
    display(start2);
}

Вывод:

3^2+3^2+3^2+
4^2+4^2+

Демонстрация на coliru

...