请大佬帮我看一下这个C++程序错在哪了?没有编译错误但不能输出,谢谢大佬

#include <iostream>
using namespace std;
typedef struct SNode* Polynomial;
struct SNode{
int coefficient;//系数
int index;//指数
Polynomial next;
};
Polynomial attach(int num1=0,int num2=0){
Polynomial list = new(struct SNode);
list->coefficient = num1;
list->index = num2;
list->next = NULL;
return list;
}
Polynomial ReadyPoly(int n){
int number1,number2;
Polynomial list,head = list;
cout<<"Please input the coeddicients and index"<<endl;
while(n--){
cin>>number1>>number2;
list = attach(number1,number2);
list = list->next;
}
return head;
}
Polynomial add( Polynomial & list1,Polynomial & list2){
Polynomial list;
Polynomial start = list;
while(list1||list2){
if((list1->index)>(list2->index)){
list = attach(list1->coefficient,list1->index);
cout<<"larger"<<endl;
}else if(list1->index==list2->index){
int coef = list1->coefficient+list2->coefficient;
list = attach(coef,list1->index);
}else{
list = attach(list2->coefficient,list2->index);
}
list = list->next;
list2 = list2->next;
list1 = list1->next;
}
return start;
}
void printPoly(Polynomial & list){
while(list){
cout<<"( "<<list->coefficient<<","<<list->index<<" )"<<endl;
list = list->next;
}
}
int main()
{
int count,n=2;
Polynomial list1=NULL,list2=NULL;
cout<<"Please input times of input."<<endl;
cin>>count;
list1 = ReadyPoly(count);
cin>>count;
list2 = ReadyPoly(count);
Polynomial list=NULL;
list = add(list1,list2);
printPoly(list);
return 0;
}
初学数据结构和C++还望大家指导,谢谢!

/**
 * 编译器:vs2010
 * @fencaide 2017年12月3日12:42:30
 */
#include <iostream>
using namespace std;
typedef struct SNode* Polynomial;
struct SNode{
    int coefficient;//系数 
    int index;//指数 
    Polynomial next;
};
Polynomial attach(int coefficient=0, int index=0){
    Polynomial list = new(struct SNode);
    list->coefficient = coefficient;
    list->index = index;
    list->next = NULL;
    return list;
}
Polynomial ReadyPoly(int n){
    int number1,number2; 
Polynomial head = NULL;
Polynomial list = NULL;
    cout<<"Please input the coeddicients and index"<<endl;
    while(n--){
        cin>>number1>>number2;
        Polynomial elem = attach(number1, number2);
if(NULL == head){
//第一次赋值head
list = elem;
head = list;
}
else{
list->next = elem;
list = list->next;
}
    }
    return head;
}
/*
Polynomial CopyPoly(Polynomial &from){
Polynomial iterator = from;
Polynomial head = NULL;
Polynomial list = NULL;
while(iterator->next){
Polynomial elem = attach(iterator->coefficient, iterator->index);
if(NULL == head){
//第一次赋值head
list = elem;
head = list;
}
else{
list->next = elem;
list = list->next;
}
    }
return head;
}*/

Polynomial add( Polynomial & list1,Polynomial & list2){
    Polynomial head = NULL;
Polynomial elem = NULL;
Polynomial list = NULL;
//Polynomial List = CopyPoly(list1);
//这里假设list1 和list2 都是合并同类项且按照次数由高到低排序后的多项式
while(1){
if(NULL == list1 && NULL == list2){
break;
}
else if(NULL == list1){
list->next = list2;
break;
}
else if(NULL == list2){
list->next = list1;
break;
}
else if(list1->index == list2->index){
elem = attach(list1->coefficient + list2->coefficient, list1->index);
//都后移
list1 = list1->next;
list2 = list2->next;
}
else if(list1->index > list2->index){
elem = attach(list1->coefficient, list1->index);
//1后移
list1 = list1->next;
}
else{
elem = attach(list2->coefficient, list2->index);
//2后移
list2 = list2->next;
}

//添加到list中去
if(NULL == head){
//第一次赋值head
list = elem;
head = list;
}
else{
list->next = elem;
list = list->next;
}
}
return head;
}

void printPoly(Polynomial &list){
Polynomial p = list;
    while(p){
        cout<<"( "<<p->coefficient<<","<<p->index<<" )"<<endl;
        p = p->next;
    } 
}

void gc(Polynomial &list){
Polynomial p = list;
cout<<"Program is free memory..."<<endl;
while(p){
Polynomial q = p;
p = p->next;
delete q;
}
}


int main()
{
    int count,n=2;
    Polynomial list1=NULL,list2=NULL;
    cout<<"Please input times of input."<<endl;
    cin>>count;
    list1 = ReadyPoly(count);
printPoly(list1);

cout<<"Please input times of input."<<endl;
    cin>>count;
    list2 = ReadyPoly(count);
printPoly(list2);

cout<<"Add result is:"<<endl;
    Polynomial list = add(list1, list2);;
    printPoly(list);

gc(list1);
gc(list2);
gc(list);

getchar();
getchar();
    return 0;
}

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答