关于链式结构

@关于链式结构做一元多项次的加法和乘法

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFALSE -2

typedef int Status;
typedef int ElemType;

typedef struct LNode{
float date;
ElemType jin;
struct LNode next;
}LNode,
LinkList;

void CreateList_L(LinkList &L){
int i;
int n;
LinkList p,q;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
q=L;
printf(“请输入组数:”);
scanf("%d",&n);
if(n<=0){
printf(“请输入大于0的组数\n”);
printf(“请输入组数:”);
scanf("%d",&n);
if(n<=0) {
printf(“输入组数错误\n”);
exit(OVERFALSE);
}
}
for(i=0;i<n;i++){
p=(LinkList)malloc(sizeof(LNode));
printf(“请输入常数和指数:”);
scanf("%f %d",&p->date,&p->jin);
p->next=NULL;
q->next=p;
q=p;
}
}
void MyPrintf(LinkList L){
LinkList q;
q=L->next;
while(q!=NULL){
printf("%.3fX^%d",q->date,q->jin);
if(q->next!=NULL&&q->next->date>0)
printf("+");
q=q->next;
}
}
LinkList AddLinkList(LinkList L1,LinkList L2){
LinkList pa,pb,s,pc,p,tc;
pc=(LinkList)malloc(sizeof(LNode));
pc->next=NULL;
tc=pc;
pa=L1->next;
pb=L2->next;
while(pa!=NULL&&pb!=NULL)
{
if(pa->jinjin)
{
s=(LinkList)malloc(sizeof(LNode));
s->date=pa->date;
s->jin=pa->jin;
s->next=NULL;
tc->next=s;
tc=s;
pa=pa->next;
}
else if(pa->jin>pb->jin)
{
s=(LinkList)malloc(sizeof(LNode));
s->date=pb->date;
s->jin=pb->jin;
s->next=NULL;
tc->next=s;
tc=s;
pb=pb->next;
}
else
{
if(pa->date+pb->date!=0)
{
s=(LinkList)malloc(sizeof(LNode));
s->date=pa->date+pb->date;
s->jin=pa->jin;
s->next=NULL;
tc->next=s;
tc=s;
}
pa=pa->next;
pb=pb->next;
}
}
if(pa!=NULL)
p=pa;
else
p=pb;
while(p!=NULL)
{
s=(LinkList)malloc(sizeof(LNode));
s->date=p->date;
s->jin=p->jin;
s->next=NULL;
tc->next=s;
tc=s;
p=p->next;
}
return pc;
}
LinkList ChenLinkList(LinkList L1,LinkList L2){
LinkList pa,pb,s,pc,p,tc;
pc=(LinkList)malloc(sizeof(LNode));
pc->next=NULL;
tc=pc;
pa=L1->next;
pb=L2->next;
while(pa!=NULL){
for(;pb!=NULL;){
s=(LinkList)malloc(sizeof(LNode));
s->date=pa->date
pb->date;
s->jin=pa->jin+pb->jin;
s->next=NULL;
tc->next=s;
tc=s;
pb=pb->next;
}
pa=pa->next;
if(pbNULL&&pa!=NULL)
pb=L2->next;
}
return pc;
}
LinkList ZhengliLinkList(LinkList K){
LinkList pa,pb,s,pc,p,tc,m,ht,ha,hc;
pc=(LinkList)malloc(sizeof(LNode));
pc->next=NULL;
tc=pc;
pa=K->next;
while(pa!=NULL){
pb=pa->next;
p=pb;
while(pb!=NULL){
if(pa->jin!=pb->jin){
pb=pb->next;
}else{
pb->date=pa->date+pb->date;
pa->date=0;
pb=pb->next;
pa=p;
}
}
if(pa!=p&&pb
NULL){
s=(LinkList)malloc(sizeof(LNode));
s->date=pa->date;
s->jin=pa->jin;
s->next=NULL;
tc->next=s;
tc=s;
pa=pa->next;
}
}
hc=(LinkList)malloc(sizeof(LNode));
hc->next=NULL;
ht=hc;
ha=pc->next;
while(ha!=NULL){
if(ha->date0){
ha=ha->next;
}else{
s=(LinkList)malloc(sizeof(LNode));
s->date=ha->date;
s->jin=ha->jin;
s->next=NULL;
ht->next=s;
ht=s;
ha=ha->next;
}
}
if(hc->next
NULL){
printf(“合并同类型错误”);
exit(0);
}
return hc;
}
main(){
LinkList S,F;

CreateList_L(S);
LinkList s=ZhengliLinkList(S);
MyPrintf(s);
printf("\n");

CreateList_L(F);
LinkList f=ZhengliLinkList(F);
MyPrintf(f);
printf("\n");

LinkList M=AddLinkList(s,f);
printf("加法:\n");
LinkList m=ZhengliLinkList(M);
MyPrintf(m);
printf("\n");

LinkList K=ChenLinkList(s,f);
LinkList k=ZhengliLinkList(K);
printf("乘法:\n");
MyPrintf(k);
printf("\n");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值