Gilgamesh_02 2021-08-07 13:52 采纳率: 50%
浏览 49
已结题

为什么在输出前面会多一个莫名其妙的地址?

这是一个用C语言实现的链表完成多项式运算的程序。
问题描述:
设计函数分别求两个一元多项式的和
(1)3x4 - 5x2 + 6x - 2 ;
(2)5x20 - 7x4 + 3x ;

输入样例:
4 3 4 -5 2 6 1 -2 0
3 5 20 -7 4 3 1

输出样例:
5 20 -4 4 -5 2 9 1 -2 0

代码(函数声明放在头文件不再展示):

#include<stdio.h>
#include<stdlib.h>
#include"polynomial.h" 
void Attach(int c,int e,Polynomial *pRear);
int main(void)
{
    Polynomial P1,P2,PS;
    P1=ReadPoly();
    P2=ReadPoly();
    /*PP=MultPoly(P1,P2);
    PrintPoly(PP);*/
    PS=AddPoly(P1,P2);
    PrintPoly(PS);
    return 0; 
}

Polynomial ReadPoly(void)
{
    Polynomial P,Rear,t;
    int N,c,e;
    scanf("%d",&N);
    P=(Polynomial)malloc(sizeof(struct PolyNode));
    P->Link=NULL;
    Rear=P;
    while(N--)
    {
        scanf("%d%d",&c,&e);
        Attach(c,e,&Rear);
    }
    t=P;
    P=P->Link;
    free(t);
    return P;
} 

void Attach(int c,int e,Polynomial *pRear)
{
    Polynomial Q;
    Q=(Polynomial)malloc(sizeof(struct PolyNode));
    Q->coef=c;
    Q->expon=e;
    Q->Link=NULL; 
    (*pRear)->Link=Q;
    *pRear=Q;
}

Polynomial AddPoly(Polynomial P1,Polynomial P2)
{
    Polynomial t1,t2,P;
    Polynomial Rear;
    t1=P1;
    t2=P2;
    P=(Polynomial)malloc(sizeof(struct PolyNode));
    P->Link=NULL;
    Rear=P;
    while(t1 && t2)
    {        
        if(t1->expon == t2->expon)
        {
            Attach(t1->coef+t2->coef,t1->expon,&Rear);
            t1=t1->Link;
            t2=t2->Link;
            continue;
        }
        if(t1->expon > t2->expon)
        {
            Attach(t1->coef,t1->expon,&Rear);
            t1=t1->Link; 
            continue;
        }
        else
        {
            Attach(t2->coef,t2->expon,&Rear);
            t2=t2->Link;
            continue;
        }
    } 
    while(t1)
    {
        Attach(t1->coef,t1->expon,&Rear);
        t1=t1->Link;
    }
    while(t2)
    {
        Attach(t2->coef,t2->expon,&Rear);
        t2=t2->Link;
    }
    return P;
}

/*Polynomial MultPoly(Polynomial P1,Polynomial P2)
{
    
}*/


void PrintPoly(Polynomial P)
{
    int flag;
    if(!P)
    {
        printf("0 0\n");
        return;
    }
    while(P)
    {
        if(!flag)
            flag=1;
        else
            printf(" ");
        printf("%d %d ",P->coef,P->expon);
        P=P->Link;
    }
    
}


输出:
img
(想知道为什么输出前会有一个疑似地址的东西)

  • 写回答

1条回答 默认 最新

  • 浪客 2021-08-07 15:34
    关注

    函数AddPoly末尾改为return P->Link;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月15日
  • 已采纳回答 8月7日
  • 创建了问题 8月7日

悬赏问题

  • ¥15 Python程序,深度学习,有偿私
  • ¥15 扫描枪扫条形码出现问题
  • ¥35 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3
  • ¥15 我的R语言提示去除连锁不平衡时clump_data报错,图片以下所示,卡了好几天了,苦恼不知道如何解决,有人帮我看看怎么解决吗?
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开