• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: C/C++
  • 标签:

资源简介

用链表实现两个多项式相加的C语言源代码,两个多项式相加时,同类项的系数相加,无同类项的系数保持不变,想家完后再按升幂排序,结果放回链表中。是数据结构的作业,改编了网上的代码,运行结果正确。

资源截图

代码片段和文件信息

#include
#include
#include
#define LEN sizeof(node)
typedef struct polynode /*用单链表存储多项式的结点结构*/
{
int coef; /*多项式的系数*/
int exp; /*指数*/
struct polynode *next; /*next是struct polynode类型中的一个成员,它又指向
struct polynode类型的数据,以此建立链表*/
}node;/*若定为“node*list;“,意即node*与list同为结构指针类型*/
node * create(void) /*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*/
{
node *h*r*s;
int ce;
h=(node *)malloc(LEN); /*建立多项式的头结点,为头结点分配存储空间*/
r=h; /*r指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/
printf(“coef:“);
scanf(“%d“&c); /*输入系数*/
printf(“exp: “);
scanf(“%d“&e); /*输入指针*/
while(c!=0) /*输入系数为0时,表示多项式的输入结束*/
{
s=(node *)malloc(LEN); /*申请新结点*/
s->coef=c; /*申请新结点后赋值*/
s->exp=e; /*申请新结点后赋值*/
r->next=s; /*做尾插,插入新结点*/
r=s; /*r始终指向单链表的表尾*/
printf(“coef:“);
scanf(“%d“&c);
printf(“exp: “);
scanf(“%d“&e);
}
r->next=NULL; /*将表的最后一个结点的next置NULL,以示表结束*/
return(h);
}
void polyadd(node *polya node *polyb)/*一元多项式相加函数,用于将两个多项式相加,然后将和多项式存放在多项式polya中,并将多项式ployb删除*/
{
node *p*q*pre*temp;
int sum;
p=polya->next;/*令p和q分别指向polya和polyb多项式链表中的第一个结点*/
q=polyb->next;
pre=polya; /*位置指针,指向和多项式polya*/
while(p!=NULL&&q!=NULL) 

评论

共有 条评论

相关资源