一元稀释多项式C语言的建立及加减

  • V7_954630
    了解作者
  • 155KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-13 01:15
    上传日期
(1)以链表表示多项式,对项数输入为整数,系数和指数成对的输入 (2)输入项数和系数指数后建立多项式,并输出多项式。同样建立要相减、相加的多项式,并输出计算结果。
9461_062235_牟小军_一元稀释多项式.rar
  • 9461_062235_牟小军_一元稀释多项式
  • 计算器
  • 1.cpp
    3.7KB
  • 1.dsp
    3.3KB
  • 1.dsw
    510B
  • 1.opt
    47.5KB
  • 1.plg
    727B
  • Debug
  • 1.obj
    9.6KB
  • 1.opt
    42.5KB
  • 1.pdb
    577KB
  • vc60.pdb
    100KB
  • 1.exe
    200.1KB
  • 1.ncb
    57KB
  • 新建文件夹
内容介绍
#include <stdio.h> #include<malloc.h> #define NULL 0 typedef struct PolynNode { /*某一项*/ float coef; /*系数*/ int expn; /*指数*/ } ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; typedef LinkList Polyn; Polyn init_polyn(Polyn head,int n) { /*创建有n项的多项式,n应大于0,但不作检查*/ /*指数e1<e2<e3...,但不作检查,间隔地输入系数与指数,即c1 e1 ...*/ Polyn p,q = head; float coef; int expn,count; p = (Polyn)malloc(sizeof(LNode)); printf("Please input n pairs of coef and expn.\n"); for(count = 0;count < n;count++) {q->next = p; q = p; scanf("%f%d",&coef,&expn); p->data.coef = coef; p->data.expn = expn; p = (Polyn)malloc(sizeof(LNode)); } q->next = NULL;/*尾*/ return head; } Polyn print_polyn(Polyn head) {/*输出*/ Polyn p=head->next; while(p != NULL) { printf("%f",p->data.coef); printf("X^%d",p->data.expn); p=p->next; if(p==NULL) break; if(p->data.coef>0) printf("+"); } printf("\n"); return head; } Polyn add_polyn(Polyn ha,Polyn hb) {/*多项式相加*/ Polyn p1 = ha,p2 = ha,q1 = hb,q2 = hb; p1 = p1->next; q1 = q1->next; while( (p1 != NULL) && (q1 != NULL)) { if(p1->data.expn < q1->data.expn) { /*p1指数<q1指数*/ p2 = p1; p1 = p1->next; } else { if(p1->data.expn == q1->data.expn) { /*q1指数==p1指数*/ if(!(p1->data.coef + q1->data.coef))/*系数之和为0*/ { p1 = p1->next; free(p2->next); p2->next = p1; q1 = q1->next; free(q2->next); q2->next =q1; } else { /*系数之和不为0*/ p1->data.coef += q1->data.coef; p2 = p1; p1 = p1->next; q1 = q1->next; free(q2->next); q2->next =q1; } } else { /*q1指数<p1指数*/ p2->next = q1; q1 = q1->next; q2->next->next=p1; q2->next = q1; p2=p2->next; } } } if(p1 == NULL) { /*p1结束了,q1未结束*/ p2->next = q1; } printf("\n"); return ha; } Polyn minus_polyn(Polyn ha,Polyn hb) { Polyn p1 = ha,p2 = ha,q1 = hb,q2 = hb; p1 = p1->next; q1 = q1->next; while(q1!=NULL) {q1->data.coef=0-q1->data.coef; q1=q1->next;} q1 = hb; q1 = q1->next; while( (p1 != NULL) && (q1 != NULL)) { if(p1->data.expn < q1->data.expn) { /*p1指数<q1指数*/ p2 = p1; p1 = p1->next; } else { if(p1->data.expn == q1->data.expn) { /*q1指数==p1指数*/ if(!(p1->data.coef + q1->data.coef)) {/*系数之和为0*/ p1 = p1->next; free(p2->next); p2->next = p1; q1 = q1->next; free(q2->next); q2->next =q1; } else { /*系数之和不为0*/ p1->data.coef += q1->data.coef; p2 = p1; p1 = p1->next; q1 = q1->next; free(q2->next); q2->next =q1; } } else { /*q1指数<p1指数*/ p2->next = q1; q1 = q1->next; q2->next->next=p1; q2->next = q1; p2=p2->next; } } } if(p1 == NULL) { /*p1结束了,q1未结束*/ p2->next = q1; } printf("\n"); return ha; } void main() { Polyn init_polyn(Polyn head,int n); Polyn print_polyn(Polyn head); Polyn add_polyn(Polyn ha,Polyn hb); Polyn minus_polyn(Polyn ha,Polyn hb); LNode polyn1,polyn2; Polyn ha = &polyn1,hb = &polyn2; int n,a; printf("输1为加法,输2为减法,0为退出"); while(a){ scanf("%d",&a); switch(a)//选择操作加、减 {case 1: printf("输入要第一项的项数,按升幂输入多项式的系数和指数\n"); scanf("%d",&n); init_polyn(ha,n); print_polyn(ha); printf("输入要相加的项数.\n"); scanf("%d",&n); init_polyn(hb,n); print_polyn(hb); add_polyn(ha,hb); print_polyn(ha); printf("\n");break; case 2: printf("输入要第一项的项数,按升幂输入多项式的系数和指数\n"); scanf("%d",&n); init_polyn(ha,n); print_polyn(ha); printf("输入要相减的项数\n"); scanf("%d",&n); init_polyn(hb,n); print_polyn(hb); minus_polyn(ha,hb); print_polyn(ha); printf("\n");break; } }//while }
评论
    相关推荐
    • 电话本双向链表C语言实现
      电话本主界面——链表实现 显示[0]--显示所有电话项 添加[1]--添加一个新的项 前插[2]--在所选项前插入新项 后插[3]--在所选项后插入新项 删除[4]--删除所选项 退出[5]--退出(释放内存...
    • 指针链表 c语言 资源操作
      有3种资源:Play/Record/Collect 每个资源有3种状态:Unknow/Ready/InUse 针对资源有5种操作:Init/Open/Close/Reset/Release UnKnow状态下可对应的操作:Init/Reset Ready状态下可对应的操作:Init/Open/Release/...
    • 静态链表C语言实现
      代码经过产品验证,可以直接用于产品,有利于提高产品开发进度。
    • 简易客房管理系统 链表 c语言
      简易客房管理系统 链表 c语言 链表 c语言你懂的
    • 哈希链表c语言实现,可以直接用来做项目
      不用我多说了,常用的一些基本数据结构,可以直接用于项目开发的,便于大家学习交流。
    • 数据结构链表C语言实现
      课程要求,线性表链式存储结构。有尾接法也有头接法。
    • 双向链表C语言实现
      通过双向链表实现按照ID序列插入,可以排序实现插入、删除、更新、修改;
    • 单向链表c语言实现数据结构
      c语言实现单向链表的数据结构,可以在编译器里直接使用的
    • 循环链表C语言实现
      1.创建链表 2.销毁链表 3.获取链表长度 4.清空链表 5.获取第pos个元素操作 6.插入元素到位置pos 7.删除位置pos处的元素 8.获取当前游标指向的数据元素; 9.将游标重置指向链表中的第一个数据元素; 10.将游标移动...
    • 二元查找树转变为双向链表C语言实现
      输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表 要求不能创建任何新的节点,只调整指针的指向 微软面试题