早教吧 育儿知识 作业答案 考试题库 百科 知识分享

数据结构用C语言-一元多项式的简单计算运行没错误,但输入后内存好像会出现问题,可能是动态申请空间有什么问题,各位高手帮我改改#include#include#include#defineM16typedefstructterm{

题目详情
数据结构用C语言-一元多项式的简单计算运行没错误,但输入后内存好像会出现问题,可能是动态申请空间有什么问题,各位高手帮我改改 #include #include #include #define M 16 typedef struct term { //项的表示,多项式的项作为LinkList的数据元素 float coef; //系数 int expn; //指数 struct term *next; }term; void PolyInitiate(term **head) { *head = (term *)malloc(sizeof(term)); (*head)->next = NULL; } void CreatPolyn(term *P,int m) {// 输入m项的系数,最高次幂项指数为m-1,建立表示一元多项式的单链表P P->coef = 0.0; int i; printf("依次输入%d个系数(没有的项系数为0)\n",m); for (i = 0; i < m; i++) { // 依次输入m个项 printf("指数为%d的系数",i); scanf("%f",&P->coef); P->expn = i; P = P->next = (term*)malloc(sizeof(term)); } } void Calculatepoly(term *x, term *y, term *z, int a) {//计算多项式x和y,a为0加,非0减,结果为z int i; for(i = 0; i < M; i++) { if(a!=0) z->coef = x->coef + y->coef; else z->coef = x->coef - y->coef; z->expn = x->expn; } } void Printfpoly(term *z) {//输出多项式z int i; printf(" %fx^%d ", z->coef, z->expn); z = z->next; for(i=1; i < M-1; i++) { if(z->coef >= 0)printf("+"); printf(" %fx^%d ", z->coef, z->expn); z = z->next; } } void main(void) {//测试主函数 term *x, *y, *z; int a; printf("加法输入1,减法输入0"); scanf("%d",&a); PolyInitiate(&x); PolyInitiate(&y); PolyInitiate(&z); CreatPolyn(x,M); CreatPolyn(y,M); Printfpoly(x); Printfpoly(y); Calculatepoly(x, y, z, a); Printfpoly(z); }
▼优质解答
答案和解析
malloc分配内存要用free释放