链表之一元多项式加法
来源:互联网 发布:ubuntu 列出所有用户 编辑:程序博客网 时间:2024/05/21 21:35
A=7+3x+9x^8+5x^17
b=8x+22x^7-9x^8
c=A+b=7+11x+22x^7+5x^17
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define LEN sizeof(LNode)
typedef struct LNode
{
int coef;
int exp;
struct LNode *next;
}* Link;
typedef struct
{
Link head,tail;
int len;
} LinkList;
Link InitList(LinkList &L)
{
int c,e;
Link r;//r相当于*tail
L.head=(LNode *)malloc(LEN);
r=L.head;
//printf("输入系数:");
scanf("%d",&c);
//printf("输入指数:");
scanf("%d",&e);
while(c!=0)
{
L.tail=(LNode *)malloc(LEN);//新节点
L.tail->coef=c;
L.tail->exp=e;
r->next=L.tail;
r=L.tail;
//printf("输入系数:");
scanf("%d",&c);
//printf("输入指数:");
scanf("%d",&e);
}
r->next=NULL;
return (L.head);
}
void free(Link t)
{
t->next=NULL;
}
void Add(Link pa,Link pb)
{
Link p,q,tail,temp;
int sum;
p=pa->next;
q=pb->next;
tail=pa;
while(p!=NULL&&q!=NULL)//有序链表的归并
{
if(p->exp<q->exp)
{
tail->next=p;
tail=p;
p=p->next;
}
else if(p->exp==q->exp)
{
sum=p->coef+q->coef;
if(sum!=0)
{
p->coef=sum;
tail->next=p;
tail=p;
p=p->next;
q=q->next;
}
else
{
temp=p->next;
free(p);
p=temp;
temp=q->next;
free(q);
q=temp;
}
}
else
{
tail->next=q;
tail=q;
q=q->next;
}
}
if(p!=NULL)
tail->next=p;
else
tail->next=q;
}
void print(Link p)
{
while(p->next!=NULL)
{
p=p->next;
if(p->next!=NULL)
printf(" %d*x^%d+",p->coef,p->exp);
else
printf(" %d*x^%d",p->coef,p->exp);
}
}
void main()
{
Link pa,pb;
LinkList ppa,ppb;
printf("\t一元多项式的相加算法!\n");
printf("请分别有序地输入第一个一元多项式的系数和指数,输入为0时为结束!\n");
pa=InitList(ppa);
printf("你输入的多项式为:\n");
print(pa);
printf("\n");
printf("请分别有序地输入第二个一元多项式的系数和指数,输入为0时为结束!\n");
pb=InitList(ppb);
printf("你输入的多项式为:\n");
print(pb);
printf("\n");
printf("两个一元多项式的和为:\n");
Add(pa,pb);
print(pa);
printf("\n");
}
- 链表之一元多项式加法
- 3.数据结构--线性表之一元多项式的加法与乘法运算
- 链表的多项式加法链表的多项式加法
- 线性表之一元多项式求和
- 数据结构之一元多项式
- 多项式加法 链表方法
- 数据结构之一元多项式相加
- 数据结构之一元多项式相乘
- 链表实现一元多项式加法
- 链表实现多项式加法和乘法
- 链表存储的多项式加法
- 多项式加法,链表方法实现
- java 链表实现多项式加法!
- 多项式加法运算链表实现
- 链表实现两个多项式的加法
- 链表应用--多项式加法、乘法
- 数据结构课程设计之一元多项式的计算
- 数据结构实验之一元多项式相加
- 孤儿进程与僵尸进程
- Java后台如何弹出window的下载对话框
- android高仿京东快报(垂直循环滚动新闻栏)
- sphinx多条件查询
- 安卓圆形TextView实现方法
- 链表之一元多项式加法
- 我的第一家实习公司“嘉兴聚变科技有限公司”
- 5-14 电话聊天狂人
- Android的实现文字渐变效果和歌词进度的效果
- 从OpenCV源码学习cpp_const
- 一种跨域单点登录的解决办法
- model设置属性的封装(存取文件数据,为cell传数据)
- C语言0728
- 对Socket CAN的理解(1)——【CAN总线原理】