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

资源简介

数据结构作业中用c语言的链表来实现一元多项式的加减乘运算!

资源截图

代码片段和文件信息

#include 
#include 

typedef struct node{//定义节点类型 
float coef; 
int expn; 
struct node * next; 
}PLOY; 

void start()//用户选择界面 

printf(“************************************\n“); 
printf(“ 两个一元多项式的相加/相减,相乘:\n“); 
printf(“************************************\n“); 
printf(“请选择操作:\n“); 
printf(“0.退出\n“); 
printf(“1.两个一元多项式相加\n“); 
printf(“2.两个一元多项式相乘\n“); 
printf(“3.两个一元多项式相减\n“);  

void insert(PLOY *headPLOY *inpt)//查找位置插入新链节程序 

PLOY *pre*now; 
int signal=0; 
pre=head;//pre定义为现在的前一个链节 
if(pre->next==NULL) {pre->next=inpt;} 
else {now=pre->next; 
while(signal==0) 

if(inpt->expnexpn)//当新链节小于现在的连接时向后移一个链节 

if(now->next==NULL) 

now->next=inpt; 
signal=1; 

else 

pre=now; 
now=pre->next; 


else 
if(inpt->expn>now->expn)//如果发现比现在的链节大了就插入到这个连接的前面 

inpt->next=now; 
pre->next=inpt; 
signal=1; 

else 

now->coef=now->coef+inpt->coef; 
signal=1; 
free(inpt);//与当前链节相等指数 
if(now->coef==0) 

pre->next=now->next; 
free(now); 






PLOY *creat(char ch)//输入多项式 

PLOY *head*inpt; 
float x; 
int y; 
head=(PLOY *)malloc(sizeof(PLOY));//创建链表头 
head->next=NULL; 
printf(“请输入一元多项式%c:(格式是:系数 指数;以0 0 结束!)\n“ch); 
scanf(“%f %d“&x&y); 
while(x!=0) 

inpt=(PLOY *)malloc(sizeof(PLOY));//创建新链节 
inpt->coef=x; 
inpt->expn=y; 
inpt->next=NULL; 
insert(headinpt);//不然就查找位置并且插入新链节 
printf(“请输入一元多项式%c的下一项:(以0 0 结束!)\n“ch); 
scanf(“%f %d“&x&y); 

return head; 


PLOY *addPLOY(PLOY *headPLOY *pre)//多项式相加 

PLOY *inpt; 
int flag=0; 
while(flag==0) 

if(pre->next==NULL) 
flag=1;//当现在指向空时跳出循环 
else 

pre=pre->next; 
inpt=(PLOY *)malloc(sizeof(PLOY));//创建新链节 
inpt->coef=pre->coef; 
inpt->expn=pre->expn; 
inpt->next=NULL; 
insert(headinpt); 
}//否则把当前“g(x)”的链节插入到“y(x)”中 

return head; 


PLOY *minusPLOY(PLOY *headPLOY *pre)//多项式相加 

PLOY *inpt; 
int flag=0; 
while(flag==0) 

if(pre->next==NULL) 
flag=1;//当现在指向空时跳出循环 
else 

pre=pre->next; 
inpt=(PLOY *)malloc(sizeof(PLOY));//创建新链节 
inpt->coef=0-pre->coef; 
inpt->expn=pre->expn; 
inpt->next=NULL; 
insert(headinpt); 
}//否则把当前“g(x)”的链节插入到“y(x)”中 

return head; 


PLOY *byPLOY(PLOY *head1PLOY *head2)

评论

共有 条评论