用C语言实现数据结构的题目:一元多项式相加

来源:百度知道 编辑:UC知道 时间:2024/07/07 18:00:30
下面的是本人编写的程序,经调试发现在排序那段有问题。有没有高人帮我修改下,最好不要把我的框架改了,小弟再次谢过!

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 20 //结构定义
typedef struct Node{
float coef;
int expn;
struct Node *next;
}*LNode;

void CreatF(LNode &L,int n){ //建立一个多项式
int i;
LNode p,q;
L=(LNode) malloc(sizeof(LNode));
L->expn=-1;
L->next=NULL;
p=L->next;
q=L;
for(i=1;i<=n;i++){
p=(LNode) malloc(sizeof(LNode));
p->next=NULL;
printf("请输入第%d项的系数",i);
scanf("%f",&p->coef);
printf("请输入第%d项的指数",i);
scanf("%d",&p->expn);
q->next=p;
p=p->next;
q=q->next;
}
}//CreatF

void PaixuF(LNode &L,int n){ //冒泡排序
LNode p,q;
p=L->next;
q=p->next;
int i,j,t;
for(i=1;i<n;i++){
for(j

注意:输入时,指数按升序输入
如: 1 1 2 2 3 3 0 0
2 2 3 3 0 0
结果:1 1 4 2 6 3

#include <stdio.h>
#include <malloc.h>
struct poly //设置结构体
{
int xi;
int zhi;
struct poly *next;
};
struct poly *jianli(void) //建立链表
{
struct poly *p1,*head1,*p2;
head1=(struct poly*)malloc(sizeof(poly));
p1=(struct poly*)malloc(sizeof(poly));
scanf("%d %d",&p1->xi,&p1->zhi);
head1->next=p1;
p1->next=NULL;
while(1)
{
p2=(struct poly*)malloc(sizeof(poly));
scanf("%d %d",&p2->xi,&p2->zhi);
if(p2->xi==0) if(p2->zhi==0) {free(p2);break;}
p1->next=p2;
p2->next=NULL;
p1=p2;
}
return(head1);
}
struct poly *jisuan(struct poly *head1,struct poly *head2) //多项式的相加
{
struct poly *p1,*p2,*r1,*r2;
r1=head1;
p1=head1->next;