两个多项式相加的程序为啥不对(~_~;)

求不得。 2019-04-14 01:35:23
#include<stdio.h> #include<stdlib.h> //#define flag 0; typedef struct { float coef; int expn; }DataType; typedef struct Node { DataType data; struct Node *next; }LNode,*LinkList; void CreatLinkList2(LinkList L) { LinkList r,s; DataType x; printf("Please input coef and expn:"); scanf("%f%d",&x.coef,&x.expn); r=L; while(x.coef) { s=(LinkList)malloc(sizeof(LNode)); s->data=x; r->next=s; r=s; scanf("%d",&x.coef); } r->next=NULL; } LinkList Add_L(LinkList P,LinkList Q) { LNode *p,*q; LNode *r,*s; float sum; p=p->next; q=Q->next; r=p; while(p&&q) { if((p->data).expn<(q->data).expn) { r->next=p; r=r->next; p=p->next; } else if((p->data).expn>(q->data).expn) { r->next=q; r=r->next; q=q->next; } else { sum=(p->data).coef+(q->data).coef; if(sum!=0) {(p->data).coef=sum; r->next=p; r=r->next; p=p->next; s=q; q=q->next; free(s); } else {s=p; p=p->next; free(s); } } } if(p) r->next=p; else r->next=q; free(Q); return P; } void PrintLinkList(LinkList L) { LinkList p; p=L->next; while(p) {printf("%2f*X^%d",p->data.coef,p->data.expn); p=p->next; if(p&&p->data.coef>0) printf("+"); } printf("\n"); } int main() { LinkList L,P,Q; P=(LinkList)malloc(sizeof(LNode)); P->next=NULL; printf("Creat p:\n"); CreatLinkList2(P); printf("Output LinkListp:\n"); PrintLinkList(Q); L=Add_L(P,Q); printf("Output LinkList L:\n"); PrintLinkList(L); return 0; }
...全文
44 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
求不得。 2019-04-18
  • 打赏
  • 举报
回复
引用 1 楼 marwi_study的回复:
LinkList Add_L(LinkList P,LinkList Q);你这一个函数里面的p都没初始化,然后主函数的Q也没有初始化,你试试改一下可不可以
改了,还是不行。输入系数和指数,没有输出,直接结束程序了。
marwi_study 2019-04-14
  • 打赏
  • 举报
回复
LinkList Add_L(LinkList P,LinkList Q);你这一个函数里面的p都没初始化,然后主函数的Q也没有初始化,你试试改一下可不可以

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧