02-线性结构2 一元多项式的乘法与加法运算,这道题的代码上的问题

题目:
设计函数分别求两个一元多项式的乘积与和。
输入格式:

输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:

输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
输入样例:

4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1

输出样例:

15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0

问题:
代码敲出来了,样例过了。网上找的测试用例也过了,可是PAT上面过不了,PAT上面的测试用例都是答案错误。。。不知道错那里了,请各位大神帮忙看看。
代码在下面

 #include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1e3+10;
const int minn=-1005;
struct node
{
    int cor;
    int exp;
    node *next;
};
bool flag=false;
int n,lena,lenb,lenc;
node * List1,*List2,*List3;
node CreatNode(node a[])                        ///建立结构数组
{
    cin>>n;
    if(n==0)
    {
        a[0].cor=0;
        a[0].exp=0;
    }
    for(int i=0; i<n; i++)
    {
        cin>>a[i].cor;
        cin>>a[i].exp;
    }
    return *a;
}
void print(node c[])                          ///打印结构数组
{
    if(c[0].cor==0){
        flag=true;
    }
    else cout<<c[0].cor<<" "<<c[0].exp;
    for(int i=1; i<=lenc-1; i++)
    {
        if(c[i].cor!=minn)
        {
            if(c[i].cor!=0)
                cout<<" "<<c[i].cor<<" "<<c[i].exp;
        }
    }
     if(flag==true)
        cout<<"0 0";
    flag=false;
}
bool cmp(const  node & a, const node &b)            ///cmp比较
{
    return a.exp>b.exp;
}
node UnionNode(node a[],node b[],node d[])          ///将两个结构数组合并成一个大的结构数组
{
    int t=0;
    for(int i=0; i<lena; i++)
    {
        d[t].cor=a[i].cor;
        d[t].exp=a[i].exp;
        t++;
    }
    for(int i=0; i<lenb; i++)
    {
        d[t].cor=b[i].cor;
        d[t].exp=b[i].exp;
        t++;
    }
    return *d;
}
void add(node c[])                              ///将数组a,b的值赋值给c并排好序后,在c中进行加法运算
{
    int t=lenc;
    for(int i=0; i<t-1; i++)
    {
        if(c[i].exp==c[i+1].exp)
        {
            c[i].cor=c[i].cor+c[i+1].cor;
            c[i+1].cor=minn;
        }
    }
}

node mulNode(node a[],node b[],node c[])                    ///将两个结构数组相乘的值赋值给第三个结构数组
{
    int t=0;
    for(int i=0; i<lena; i++)
    {
        for(int j=0; j<lenb; j++)
        {
            c[t].cor=a[i].cor*b[j].cor;
            c[t].exp=a[i].exp+b[j].exp;
            t++;
        }
    }
    return *c;
}
void hh()
{
    cout<<endl;
}
int main()
{
    node a[maxn],b[maxn],c[maxn],d[maxn];
    a[maxn]=CreatNode(a);                   ///建立第一个结构数组
    lena=n;
    b[maxn]=CreatNode(b);                       ///建立第二个结构数组
    lenb=n;

    lenc=lena*lenb;
    c[maxn]=mulNode(a,b,c);
    sort(c,c+lenc,cmp);
    add(c);
    print(c);

    hh();
    //cout<<endl;

    lenc=lena+lenb;
    d[maxn]=UnionNode(a,b,d);           ///将两个结构数组合并起来为C
    sort(d,d+lenc,cmp);                     ///对C排序
    add(d);                     ///C中的元素相加
    print(d);

    return 0;
}

2个回答

node a[maxn],b[maxn],c[maxn],d[maxn];
这一行有错,应该是node a[maxn+1],b[maxn+1],c[maxn+1],d[maxn+1];
或者后面的调用maxn的地方改为maxn-1;
创建数组时,数组的大小要比其最大序号大1;

qq_24941111
MaSones 回复词牌名啦: C++数组的大小都是最大序号加1
一年多之前 回复
qq_38851184
不重名好难啊 哎?刚看见两个回答都是你哎
一年多之前 回复
qq_38851184
不重名好难啊 对于你说的那个数组的大小的问题,创建数组时,数组的大小要比其最大序号大1,是对结构数组是这样的,还是对别的数组也是这样的?
一年多之前 回复
qq_38851184
不重名好难啊 哇,通过测试了。谢谢你。
一年多之前 回复

4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1
25 40 -35 24 -25 22 45 21 -10 20 35 6 -42 5 14 4 -15 3 18 2 -6 1
25 40 5 20 -7 4 -5 2 9 1 -2 0Segmentation fault
测试样例的输出为段错误,可能是数组访问越界。

qq_38851184
不重名好难啊 将程序改成楼下的回答后,又把maxn(数组最大下标)改了回来,答案也是对的。不过还是要谢谢你
一年多之前 回复
qq_38851184
不重名好难啊 将数组大小改成 maxn=100 还是段错误
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

0
怎么通过浙大数据结构《一元多项式的乘法和加法》的第四个测试用例
0
用sklearn做线性回归, 但数据normalization后,出来MSE全部为0。
0
求一个线性规划单纯形法求一般方程的C/C++程序。
4
RecyclerView中点击item跳转到其他Activity并显示item内容如何实现?
0
用fgets或者fscanf从文件输入到链表中的内容错误!!
0
用fscanf和fgets从文件读取数据存储到链表失败是为什么??
0
3异步电机输入输出反馈线性化直接转矩控制仿真matlab仿真
0
LASSO回归 如何给出像一般线性回归OLS的自变量标准误
0
一个和线性优化相关的试题,A Foldy but a Goody,采用C语言的正确解答
1
数据结构上的一个线性表的冲突的解决,是不是用哈希算法怎么采用C语言的实现方式
0
线性查找规划的算法,采用数据结构和C语言的实现的思路和方式???
1
scipy解非线性方程组报错TypeError: 'int' object is not callable
0
一个多变量的线性规划的问题,采用C语言怎么做,不是思路很清楚了
0
线性规划问题,判断销售和广告的策略,采用C语言怎么实现这个问题的解答
0
线性表实现的区域策略算法问题,优化的算法用C语言开发编程的思路
0
线性表的聚合操作的问题的一个实现的算法,采用C语言的办法如何解决
1
sparkMLlib PCA降维后的数据与原来的数据不一样了,怎么使用sparkMLlib PCA降维后得到数据?
0
运用线性规划的办法解决这里的一个排料问题,具体的C语言的实现的方式
1
求大神看看这个程序怎么弄 线性表的插入算法 老显示有错误