PINKYG 2022-04-23 13:38 采纳率: 66.7%
浏览 27
已结题

单链表的操作运行出现乱码

利用单链表对一元多项式进行创建、相加等操作

#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef int Status;

typedef struct pNode{
    int coef;      //系数域
    int exp;       //指数域
    struct pNode* link;    //定义结点指针的另一种写法
}PNode;

typedef struct polynominal{
    PNode *head;
}Polynominal;

void Create(Polynominal *p);
Status Output(Polynominal *p);
void Destroy(Polynominal *p);
void Add(Polynominal *px,Polynominal *qx);

void main()
{
    Polynominal px,qx ;
    Create(&px);
    Create(&qx);
    printf("the polynominal px is:");
    Output(&px);
    printf("\nthe polynominal qx is:");
    Output(&qx);
    Add(&px,&qx);
    printf("\nthe added polynominal is:");
    Output(&qx);
    Destroy(&px);
    Destroy(&qx);
}

void Create(Polynominal *p)
{
    PNode *pn,*pre,*q;
    p->head=(PNode*)malloc(sizeof(PNode));
    p->head->exp=-1;
    p->head->link=p->head;
    for(;;)                //无限循环语句,直到遇到break退出循环
    {
        pn=(PNode*)malloc(sizeof(PNode));
        printf("coef:\n");
        scanf("%d",&pn->coef);
        printf("exp:\n");
        scanf("%d",&pn->exp);
        if(pn->exp<0)
        {
            break;
        }
        pre=p->head;
        q=p->head->link;
        while(q&&q->exp>pn->exp)
        {
            pre=q;
            q=q->link;
        }
        pn->link=q;
        pre->link=pn;
    }
}

Status Output(Polynominal *p)
{
    PNode *q;
    if(!p->head->link)           //判断多项式是否为空
        return ERROR;
    q=p->head->link;
    printf("%d*x^%d",q->coef,q->exp);
    q=q->link;
    while(q)
    {
        if(q->exp==0)      //常数项
        {
            if(q->exp>0)
            {
                printf("+%d",q->coef);
            }
            else
            {
                printf("%d",q->coef);
            }
        }
        else if(q->coef>0)   //非常数项系数大于0
        {
            printf("+%d*x^%d",q->coef,q->exp);
        }
        else                  //非常数项系数小于0
        {
            printf("%d*x^%d",q->coef,q->exp);
        }
        q=q->link;
    }
}

void Destroy(Polynominal *p)
{

运行后输入一元多项式各系数和次数后出现无限乱码

对所有循环都检查过了,没有大括号的遗漏

问题出在哪里呢

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月1日
    • 修改了问题 4月23日
    • 修改了问题 4月23日
    • 创建了问题 4月23日

    悬赏问题

    • ¥30 模拟电路 logisim
    • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
    • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
    • ¥15 安装quartus II18.1时弹出此error,怎么解决?
    • ¥15 keil官网下载psn序列号在哪
    • ¥15 想用adb命令做一个通话软件,播放录音
    • ¥30 Pytorch深度学习服务器跑不通问题解决?
    • ¥15 部分客户订单定位有误的问题
    • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
    • ¥15 Bug traq 数据包 大概什么价