1071: 数据结构作业01 -- 一元多项式的求积
来源:互联网 发布:linux 解压tar 编辑:程序博客网 时间:2024/06/07 10:48
1071: 数据结构作业01 -- 一元多项式的求积
时间限制: 1 Sec 内存限制: 128 MB提交: 48 解决: 8
[提交][状态][论坛]
题目描述
一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表。请编写程序对输入的两个一元多项式求积,并输出求积的结果。
输入
输入为两个一元多项式,每个一元多项式输入一行,按照降幂依次输入每个单项式的系数和指数,并以-1 -1作为结束。 系数和指数均为整数,指数不小于0。
输出
输出为求积结果多项式,按照降幂依次输出每个单项的系数和指数,每个数值后面用一个空格隔开,输出结果多项式后换行。 系数为0的单项式不得输出——除非结果多项式就是0,则直接输出0。
样例输入
2 5 1 0 -1 -15 4 3 0 -1 -1
样例输出
10 9 6 5 5 4 3 0
#include <stdio.h>#include <stdlib.h>#include <string.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;typedef int Elemtype;typedef struct Node{Elemtype cof;Elemtype inx;struct Node *next;}Node, *Linklist;Status visit(Elemtype a, Elemtype b){printf("%d %d", a, b);return OK;}Status InitList(Linklist *L){(*L) = (Linklist)malloc (sizeof(Node));if(!(*L))return ERROR;(*L)->next = NULL;return OK;}int ListLength(Linklist L){int i;Linklist p;p = L->next;i = 0;while(p){i++;p = p->next;}return i;}Status GetElem(Linklist L, int i, Elemtype *cof, Elemtype *inx){Linklist p;int j;p = L;j = 1;while(p && j < i){p = p->next;j++;}if(!p || j > i){return ERROR;}*cof = p->next->cof;*inx = p->next->inx;return OK;}int ElemLocate(Linklist L, Elemtype cof, Elemtype inx){Linklist p;int i;i = 1;p = L->next;while(p && (p->cof != cof || p->inx != inx)){p = p->next;i++;}if(i <= ListLength(L))return i;elsereturn 0;}Status ListInsert(Linklist *L, int i, Elemtype cof, Elemtype inx){if(i < 1 || i > ListLength(*L) + 1)return ERROR;int j;Linklist p, q;q = (Linklist)malloc (sizeof(Node));p = *L;j = 1;while(p && j < i){p = p->next;++j;}if(!p || j > i)return ERROR;q->next = p->next;p->next = q;q->cof = cof;q->inx = inx;return OK;}Status ListDelete(Linklist *L, int i, Elemtype *cof, Elemtype *inx){int j;Linklist p, q;p = *L;j = 1;while(p && j < i){p = p->next;++j;}if(!p || j > i)return ERROR;q = p->next;p->next = p->next->next;free(q);return OK;}Status ClearList(Linklist *L){Linklist p, q;p = (*L)->next;while(p){q = p;p = p->next;free(q);}(*L)->next = NULL;return OK;}Status ListEmpty(Linklist L){if(L->next == NULL)return TRUE;return FALSE;}Status ListTraverse(Linklist L){Linklist p;int juge;juge = 0;p = L->next;while(p){juge = p->cof;if(juge)break;p = p->next;}if(!juge){printf("0\n");return OK;}p = L->next;while(p && p->next != NULL){if(p->cof != 0){visit(p->cof, p->inx);printf(" ");}p = p->next;}visit(p->cof, p->inx);printf("\n");return OK;}Status PopList(Linklist *L){Linklist p, q;Elemtype temp;for(p = (*L)->next; p != NULL; p = p->next){for(q = p->next; q != NULL; q = q->next){if(p->inx < q->inx){temp = p->inx;p->inx = q->inx;q->inx = temp;temp = p->cof;p->cof = q->cof;q->cof = temp;}}}return OK;}Status FinalList(Linklist *L){Linklist p, q;//q = (Linklist *)malloc (sizeof(Node));p = (*L)->next;while(p){if(p->next != NULL && p->next->inx == p->inx){p->cof += p->next->cof;q = p->next;p->next = p->next->next;free(q);continue;}p = p->next;}return OK;}Status MulList(Linklist *L3, Linklist L1, Linklist L2){int i;//L1循环int j;//L2循环int k;//L3循环Elemtype cof1, inx1;Elemtype cof2, inx2;Elemtype cof3, inx3;//int *num;k = 1;for(i = 1; i <= ListLength(L1); i++){for(j = 1; j <= ListLength(L2); j++){GetElem(L1, i, &cof1, &inx1);GetElem(L2, j, &cof2, &inx2);cof3 = cof1 * cof2;inx3 = inx1 + inx2;ListInsert(L3, k++, cof3, inx3);}}PopList(L3);return OK;}int main(){Linklist L1, L2, L3;int cofn, inxn;//输入的系数和指数int i;//循环InitList(&L1);InitList(&L2);InitList(&L3);i = 1;while(scanf("%d%d", &cofn, &inxn), inxn != -1){ListInsert(&L1, i++, cofn, inxn);}i = 1;while(scanf("%d%d", &cofn, &inxn), cofn != -1){ListInsert(&L2, i++, cofn, inxn);}MulList(&L3, L1, L2);FinalList(&L3);ListTraverse(L3);return 0;}/*1071=================/test0.outRight:-91 2000 4484 1999 7401 1998 2023 1997 -1022-----------------Your:0==================================/test1.outRight:-10 10 -40 8 -40 6 -20 5 -40 3 -10 0 -----------------Your:0=================*/
0 0
- 1071: 数据结构作业01 -- 一元多项式的求积
- 一元多项式求积
- 数据结构实验2 一元多项式的合并
- 数据结构实验:一元多项式的运算
- 数据结构 一元多项式的表示及相加
- 一元多项式的表示及相加 数据结构
- 求一元多项式
- 数据结构 一元多项式相加
- 数据结构--一元多项式
- 数据结构-一元多项式操作
- 数据结构-一元多项式加减程序
- 数据结构实现一元多项式相加
- 数据结构一元多项式运算分析
- 1467 数据结构:一元多项式加法
- 求一元二次方程作业
- 利用结点数据类型,求两个一元多项式的和
- 一元稀疏多项式计算器:一次数据结构实验的题目
- 数据结构课程设计一元多项式的相加和相乘
- HDU 4324 Triangle LOVE
- hibernate一级缓存,二级缓存和查询缓存
- 酷派7295a官方底包优化刷机包 加入root权限省电稳定
- Metasploits Git更新
- ok6410 学习1-----关于ads VIC_MODE定义
- 1071: 数据结构作业01 -- 一元多项式的求积
- 201440805
- nginx负载均衡篇一、nginx安装
- 矩形类定义
- [Codeforces] 277A - Learning Languages
- iOS8开发~Swift UI详解
- activiti 如何获取下一步节点
- spring整合hibernate4 使用HibernateTemplate问题
- NAT and Traversal NAT(TURN/STUN/ICE)