急!!!!!!C语言纠错!!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:10:32
#include<stdio.h>
#include<malloc.h>
# define NULL 0
struct message *creat(int m);
void insert(struct message *p,int i);
struct message *compare(struct message *p1,struct message *p2);
void print(struct message *p);
struct message
{
int a;
int b;
struct message *next;
};

void main()
{
int i1,i2;
struct message *p1,*p2,*p;
printf("请输入多项式1的项数:");
scanf("%d",&i1);
printf("请输入多项式2的项数:");
scanf("%d",&i2);
p1=creat(i1);
p2=creat(i2);
printf("请输入多项式1的各数据:");
insert(p1,i1);
printf("\n请输入多项式2的各数据:");
insert(p2,i2);
p=compare(p1,p2);
print(p);
}

struct message *creat(int m)
{
int i=0;
struct message *p1,*p2,*p;
p=p1=p2=(struct message *)malloc(sizeof(message));
while(i<m)
{
p2=(struct message *)malloc(sizeof(message));

对你的程序做了修改,现在不会出现那个问题了。主要的改动是compare函数里我注释掉的那里,由于多申请了一块空间导致的你后面会出现一堆乱七八糟的数字。增加了一个flag标志字段。还有把return(p0);这句话提到程序末尾,消除了警告。
总之,程序逻辑是你的,我尽可能照你的思路改了。解决了现有的问题。

#include<stdio.h>
#include<malloc.h>
# define NULL 0
struct message *creat(int m);
void insert(struct message *p,int i);
struct message *compare(struct message *p1,struct message *p2);
void print(struct message *p);
struct message
{
int a;
int b;
struct message *next;
};

void main()
{
int i1,i2;
struct message *p1,*p2,*p;
printf("请输入多项式1的项数:");
scanf("%d",&i1);
printf("请输入多项式2的项数:");
scanf("%d",&i2);
p1=creat(i1);
p2=creat(i2);
printf("请输入多项式1的各数据:");
insert(p1,i1);
printf("\n请输入多项式2的各数据:");
insert(p2,i2);
p=compare(p1,p2);
print(p);
}

struct m