一元多项式的创建解决办法
一元多项式的创建
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
float coef;//系数
int exp;//指数
struct node *next;
}polynode, *polynlink;
polynlink CreatePolyn(int n)//n为定义插入项的项数
{
polynlink h, p, q;
int i;
h = (polynlink)malloc(sizeof(struct node));//创建一个新的链表的头指针
h->next = NULL;//让头指针的指针域为空
p = h;
for(i = 1; i <= n; ++i)
{
q = (polynlink)malloc(sizeof(struct node));//创建新的结点
printf("输入第%d项的系数!\n", i);
scanf("%f", &(p->coef ));
printf("输入第%d项的指数!\n",i);
scanf("%d", &(p->exp ));
q ->next = NULL ;//这里是让结尾的指针域为空
p ->next = q;
p = q;
}//for
printf("打印最后一项的系数和指数%f%d\n", q->coef , p->exp );//这里打印的东西有问题
return h;
}
帮忙看下是哪里错了 输入最后的一项的系数和指数有问题
------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
float coef;//系数
int exp;//指数
struct node *next;
}polynode, *polynlink;
polynlink CreatePolyn(int n)//n为定义插入项的项数
{
polynlink h, p, q;
int i;
h = (polynlink)malloc(sizeof(struct node));//创建一个新的链表的头指针
h->next = NULL;//让头指针的指针域为空
p = h;
for(i = 1; i <= n; ++i)
{
q = (polynlink)malloc(sizeof(struct node));//创建新的结点
printf("输入第%d项的系数!\n", i);
scanf("%f", &(p->coef ));
printf("输入第%d项的指数!\n",i);
scanf("%d", &(p->exp ));
q ->next = NULL ;//这里是让结尾的指针域为空
p ->next = q;
p = q;
}//for
printf("打印最后一项的系数和指数%f%d\n", q->coef , p->exp );//这里打印的东西有问题
return h;
}
帮忙看下是哪里错了 输入最后的一项的系数和指数有问题
------解决方案--------------------
- C/C++ code
printf("输入第%d项的系数!\n", i); scanf("%f", &(q->coef )); printf("输入第%d项的指数!\n",i); scanf("%d", &(q->exp ));
------解决方案--------------------
- C/C++ code
for(i = 1; i <= n; ++i) { //。。。 p ->next = q; //p = q;你这儿让最后一个节点都等于NULL,打印当然出问题了(这是①) }//for
------解决方案--------------------
- C/C++ code
printf("打印最后一项的系数和指数%f%d\n", p->coef , p->exp );//这儿改下(这是②)
------解决方案--------------------
q ->next = NULL ;//这里是让结尾的指针域为空
p ->next = q;
这里q的后一个为空,那么把q再赋给p最后一个节点没有用了。成了废的节点。
------解决方案--------------------
我不是改好了吗。。。
------解决方案--------------------
- C/C++ code
polynlink CreatePolyn(int n)//n为定义插入项的项数 { polynlink h, p, q; int i; h = (polynlink)malloc(sizeof(struct node));//创建一个新的链表的头指针 h->next = NULL;//让头指针的指针域为空 p = h; for(i = 1; i <= n; ++i) { q = (polynlink)malloc(sizeof(struct node));//创建新的结点 printf("输入第%d项的系数!\n", i); scanf("%f", &(p->coef )); printf("输入第%d项的指数!\n",i); scanf("%d", &(p->exp )); q ->next = NULL ;//这里是让结尾的指针域为空 p ->next = q; //p = q; }//for printf("打印最后一项的系数和指数%f%d\n", p->coef , p->exp ); return h; }
------解决方案--------------------