一元多项式的错误,大神帮我看看
#include<stdio.h>
#include<stdlib.h>
struct Node
{
float coef;
int expn;
struct Node *next;
};
typedef struct Node ListNode;
typedef struct Node* LinkNode;
/*创建单链表*/
ListNode *CreatList(int n)
{
ListNode *head;
ListNode *p,*pre;
int i,expn;float coef;
head=(ListNode *)malloc(sizeof(ListNode));//为头节点分配内存空间
head->next=NULL;//将头结点的指针域清空
pre=head;//先将头结点首地址赋给中间变量pre
for(i=1;i<=n;i++)//通过for循环不断加入新的结点
{
p=(ListNode *)malloc(sizeof(ListNode));//为要插入的节点分配
//内存空间p指向新插入结点的首地址
p->expn=expn;
p->coef=coef;
pre->next=p;//将p指向新结点插入链表也就是头结点指针域指向下个结点
pre=p;//这个起着指向下一个结点的作用
}
p->next=NULL;//最后将最后一个结点的指针域清空了
return head;//返回这个链表的首地址
}
/*插入节点*/
int InsertList(ListNode *h,int i,float coef,int expn)
{
int j=0;
ListNode *p; ListNode *s;
p=h; p=p->next;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1) return 0;
// s=(ListNode *)malloc(sizeof(ListNode));
p->expn=expn;
p->coef=coef;
// s->next=p->next;
// p->next=s;
return 1;
}
/*打印链表*/
void PrintListNode(ListNode *m){
ListNode *p;
p=m->next;
for(;p!=NULL;){
printf("%.1fX^%d",p->coef,p->expn);
if(p->next!=NULL)
printf("+");
p=p->next;
}
printf("n");
}
/*多项式相加*/
void AddList(ListNode *h,ListNode *H,ListNode *h1){
ListNode *pa,*pb,*pc;
pa=h,pb=H,pc=h1;
for(int i=1;pa->next==NULL&&pb->next==NULL;pa=pa->next,pb=pb->next)
{
pc->coef=pa->coef ;
pc->expn=pa->expn;
InsertList(pc,i,pc->coef,pc->expn);
pc=pc->next;
i++;
pc->coef=pb->coef ;
pc->expn=pb->expn;
InsertList(pc,i,pc->coef,pc->expn);
pc=pc->next;
i++;
}
int main()
{
ListNode *h;//h指向结构体NODE
int n=3, expn,coef;
h=CreatList(n);/*创建链表*/
coef=2;expn=1;
InsertList(h,1,coef,expn);//插入链表
coef=2;expn=5;
InsertList(h,2,coef,expn);
coef=3;expn=4;
InsertList(h,3,coef,expn);
printf("L1=");
PrintListNode(h);
ListNode *H;//h指向结构体NODE
H=CreatList(n);/*创建链表*/
coef=2;expn=10;
InsertList(H,1,coef,expn);//插入链表
coef=8;expn=5;
InsertList(H,2,coef,expn);
coef=9;expn=1;
InsertList(H,3,coef,expn);
printf("L2=");
PrintListNode(H);
ListNode *L;
n=6;
L=CreatList(n);
AddList(h,H,L);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我是题主解释一下,这是个一元多项式的相加操作,我先创建了两个一元多项式链表h,H,想创建第三个链表L存放两链表相加的和,但是
非常感谢,您解决了我两个问题。
void AddList(ListNode *h,ListNode *H,ListNode *h1){ ... 缺表示结束的 '}'。