利用结点数据类型,求两个一元多项式的和
来源:互联网 发布:keras tensorflow 编辑:程序博客网 时间:2024/06/03 18:01
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
typedef struct PNode
{
int coef;
int exp;
struct PNode *next;
}node;
node *CreateP(void)
{
node *h,*tail,*s;
int coef, exp;
h = (node *)malloc(sizeof(node));
if (!h)
{
exit(-1);
}
h->next = NULL;
tail = h;
printf("请输入每一项的系数和指数(中间以逗号隔开):\n");
printf("coef,exp: ");
scanf("%d,%d",&coef,&exp);
while (coef)
{
s = (node *)malloc (sizeof(node));
if (!s)
{
exit(-1);
}
s->coef = coef;
s->exp = exp;
s->next = tail->next;
tail->next = s;
tail = s;
printf("ceof,exp: ");
scanf("%d,%d",&coef,&exp);
}
return h;
}
void PAdd(node *polya, node *polyb)
{
node *p, *q, *pre, *temp;
int sum = 0;;
p = polya->next;
q = polyb->next;
pre = polya;
while (p && q)
{
if (p->exp < q->exp)
{
pre->next = p;
pre = p;
p = p->next;
}
else if (p->exp > q->exp)
{
pre->next = q;
pre = q;
q = q->next;
}
else
{
sum = p->coef + q->coef;
if (sum)
{
p->coef = sum;
pre->next = p;
pre = p;
p = p->next;
temp = q->next;
free(q);
q = temp;
}
else
{
temp = p->next;
free(p);
p = temp;
temp = q->next;
free(q);
q = temp;
}
}
}
pre->next = p?p:q;
}
int Prin(node *h)
{
node *p = h->next;
while(p&&(p->next!=NULL))
{
printf("%d*x^%d+",p->coef, p->exp);
p = p->next;
}
if(p->next==NULL)
printf("%d*x^%d",p->coef, p->exp);
printf("\n");
return 1;
}
void main()
{
node *polya, *polyb;
printf("请输入第一个一元多项式的系数和指数(以输入系数为0来结束):\n");
polya = CreateP();
printf("\n");
printf("请输入的第一个一元多项式为:\n");
Prin(polya);
printf("\n");
printf("输入第二个一元多项式的系数和指数(以输入系数为0来结束):\n");
polyb = CreateP();
printf("\n");
printf("输入的第二个一元多项式为:\n");
Prin(polyb);
printf("\n");
printf("这两个一元多项式相加后的多项式C为:\n");
printf("C=");
PAdd(polya, polyb);
Prin(polya);
fflush(stdin);
getchar();
# include <malloc.h>
# include <stdlib.h>
typedef struct PNode
{
int coef;
int exp;
struct PNode *next;
}node;
node *CreateP(void)
{
node *h,*tail,*s;
int coef, exp;
h = (node *)malloc(sizeof(node));
if (!h)
{
exit(-1);
}
h->next = NULL;
tail = h;
printf("请输入每一项的系数和指数(中间以逗号隔开):\n");
printf("coef,exp: ");
scanf("%d,%d",&coef,&exp);
while (coef)
{
s = (node *)malloc (sizeof(node));
if (!s)
{
exit(-1);
}
s->coef = coef;
s->exp = exp;
s->next = tail->next;
tail->next = s;
tail = s;
printf("ceof,exp: ");
scanf("%d,%d",&coef,&exp);
}
return h;
}
void PAdd(node *polya, node *polyb)
{
node *p, *q, *pre, *temp;
int sum = 0;;
p = polya->next;
q = polyb->next;
pre = polya;
while (p && q)
{
if (p->exp < q->exp)
{
pre->next = p;
pre = p;
p = p->next;
}
else if (p->exp > q->exp)
{
pre->next = q;
pre = q;
q = q->next;
}
else
{
sum = p->coef + q->coef;
if (sum)
{
p->coef = sum;
pre->next = p;
pre = p;
p = p->next;
temp = q->next;
free(q);
q = temp;
}
else
{
temp = p->next;
free(p);
p = temp;
temp = q->next;
free(q);
q = temp;
}
}
}
pre->next = p?p:q;
}
int Prin(node *h)
{
node *p = h->next;
while(p&&(p->next!=NULL))
{
printf("%d*x^%d+",p->coef, p->exp);
p = p->next;
}
if(p->next==NULL)
printf("%d*x^%d",p->coef, p->exp);
printf("\n");
return 1;
}
void main()
{
node *polya, *polyb;
printf("请输入第一个一元多项式的系数和指数(以输入系数为0来结束):\n");
polya = CreateP();
printf("\n");
printf("请输入的第一个一元多项式为:\n");
Prin(polya);
printf("\n");
printf("输入第二个一元多项式的系数和指数(以输入系数为0来结束):\n");
polyb = CreateP();
printf("\n");
printf("输入的第二个一元多项式为:\n");
Prin(polyb);
printf("\n");
printf("这两个一元多项式相加后的多项式C为:\n");
printf("C=");
PAdd(polya, polyb);
Prin(polya);
fflush(stdin);
getchar();
}
0 0
- 利用结点数据类型,求两个一元多项式的和
- 求两个多项式的和
- 利用栈实现两个一元多项式相加
- 题目1472:求两个多项式的和
- 题目1472:求两个多项式的和
- 求一元和二元多项式结果
- 计算两个一元多项式的乘积
- 两个一元多项式相加
- 求一元多项式
- 一元多项式求积
- 急求一元多项式相加的程序,希望得到c#和C++的语言版
- 求两个稀疏多项式的最小公倍数和最大公约数
- 九度OJ 题目1472:求两个多项式的和
- 求两个多项式只和,链表的存储结构。
- 【九度】题目1472:求两个多项式的和
- 九度OJ-1472:求两个多项式的和
- c++一元多项式的乘法和加法
- 一元多项式的加法和乘法运算
- jQuery表单校验 Validation
- 利用logstash的logstash-input-jdbc插件实现mysql增量导入ES的介绍
- swift学习日记(三) 函数 闭包
- java技术新人求学习之道
- BroadcastReceiver笔记
- 利用结点数据类型,求两个一元多项式的和
- 移除一个view上面的所有subview
- srand与rand随机数生成
- Could not execute JDBC batch update : java.sql.BatchUpdateException: ORA-00926: 缺失 VALUES 关键字
- http协议head详解
- 欢迎使用CSDN-markdown编辑器
- 1028. List Sorting (25)
- LeetCode P144 Binary Tree Preorder Traversal
- visual studio开启多核编译方法