共回答了25个问题采纳率:92%

一元稀疏多项式计算器设计程序代码

#include

#include

#include

#include

#define maxlen 10

#define large 999

typedef struct Linklistomial{

float coef;

int expn;

struct Linklistomial *next;

}Linklistomial,*Linklist;

void Insert(Linklist p,Linklist h){

if(p->coef==0) free(p);//系数为0的话释放结点

else

{

Linklist q1,q2;

q1=h;

q2=h->next;

while(q2&&p->expnexpn) { //查找插入位置

q1=q2;

q2=q2->next;

}

if(q2&&p->expn==q2->expn) { //将指数相同相合并

q2->coef+=p->coef;

free(p);

if(!q2->coef) {//系数为0的话释放结点

q1->next=q2->next;

free(q2);

}

}

else { //指数为新时将结点插入

p->next=q2;

q1->next=p; }

}

}

Linklist CreateLinklist(Linklist head,int m){

//建立一个头指针为head、项数为m的一元多项式

int i;

Linklist p;

p=head=(Linklist)malloc(sizeof(struct Linklistomial));

head->next=NULL;

for(i=0;icoef,&p->expn);

Insert(p,head); //调用Insert函数插入结点

}

return head;

}

void DestroyLinklist(Linklist p){ //销毁多项式p

Linklist q1,q2;

q1=p->next; q2=q1->next;

while(q1->next) {

free(q1);

q1=q2;

q2=q2->next; }

}

void PrintLinklist(Linklist P){

Linklist q=P->next;

int flag=1; //项数计数器

if(!q) { //若多项式为空,输出0

putchar('0');

printf("n");

return;

}

while(q)

{

if(q->coef>0&&flag!=1) putchar('+'); //系数大于0且不是第一项

if(q->coef!=1&&q->coef!=-1) { //系数非1或-1的普通情况

printf("%g",q->coef);

if(q->expn==1) putchar('X');

else if(q->expn) printf("X^%d",q->expn);

}

else {

if(q->coef==1)

{

if(!q->expn) putchar('1');

else if(q->expn==1) putchar('X');

else printf("X^%d",q->expn);

}

if(q->coef==-1)

{

if(!q->expn) printf("-1");

else if(q->expn==1) printf("-X");

else printf("-X^%d",q->expn);

}

}

q=q->next;

flag++;

}

printf("n");

}

int compare(Linklist a,Linklist b){

if(a&&b)

{ if(!b||a->expn>b->expn) return 1;

else if(!a||a->expnexpn) return -1;

else return 0;

}

else if(!a&&b) return -1;//a多项式已空,但b多项式非空

else return 1;//b多项式已空,但a多项式非空

}

Linklist AddLinklist(Linklist pa,Linklist pb){//求解并建立多项式a+b,返回其头指针

Linklist qa=pa->next;

Linklist qb=pb->next;

Linklist headc,hc,qc;

hc=(Linklist)malloc(sizeof(struct Linklistomial));//建立头结点

hc->next=NULL;

headc=hc;

while(qa||qb)

{

qc=(Linklist)malloc(sizeof(struct Linklistomial));

switch(compare(qa,qb)){

case 1: {

qc->coef=qa->coef;

qc->expn=qa->expn;

qa=qa->next;

break; }

case 0: {

qc->coef=qa->coef+qb->coef;

qc->expn=qa->expn;

qa=qa->next;

qb=qb->next;

break;

}

case -1: {

qc->coef=qb->coef;

qc->expn=qb->expn;

qb=qb->next;

break; }

}

if(qc->coef!=0)

{

qc->next=hc->next;

hc->next=qc;

hc=qc;

}

else free(qc);//当相加系数为0时,释放该结点

}

return headc;

}

int ValueLinklist(Linklist head,int x){

//输入x值,计算并返回多项式的值

Linklist p;

int i;

int sum=0,t;

for(p=head->next;p;p=p->next)

{

t=1;

for(i=p->expn;i!=0;)

{

if(icoef*t;

}

return sum;

}

void xiang()

{ int m,n,a,x;

char flag;

Linklist pa=0,pb=0,pc;

printf(" 欢迎使用多项式操作程序nn");

printf("请输入a的项数:");

scanf("%d",&m);

pa=CreateLinklist(pa,m);//建立多项式a

printf("请输入b的项数:");

scanf("%d",&n);

pb=CreateLinklist(pb,n);//建立多项式

//输出菜单

printf(" n");

}

int main(){

int choice;

menu();

printf(" please make your choice:");

scanf("%d",&choice);

while(choice!=3)

{

switch(choice){

case 1:system("cls");xiang();getch();break;

case 2:system("cls");shu();getch();getch();break;

default:printf(" please chooose the right choice!");getch();getch();break;

}

system("cls");

menu();

printf(" please make your choice:");

scanf("%d",&choice);

}

printf(" 谢谢使用该程序!n");

}

1年前

6

java 一元稀疏多项式简单计算器_一元稀疏多项式简单的计算器相关推荐

  1. 在线排卵计算机,【美柚女性排卵期计算器_美柚女性排卵期计算器专题】- 天鹅到家...

    很多要想比较技术专业且精确地预测分析自身的排卵期的女性.要想怀孕或避开怀孕的女性,或是要想根据对排卵期的预测分析,根据排卵期時间的不一,对生理学病症做出一些预防的女性,能够运用女性排卵期计算器.女性排 ...

  2. 模拟一个简单计算器_阅读模拟器的简单介绍

    模拟一个简单计算器 Read simulators are widely being used within the research community to create synthetic an ...

  3. java 百亿计算器_设计一个一百亿的计算器

    .补码(负数在计算机中的存储) .百亿计算器 负数在计算机中以补码的形式存储. 负数的补码表示方法是:将负数表示成二进制原码(负数最高位是1,正数最高位是0)然后将原码取反(1变0,0变1),即反码, ...

  4. python计算器简单代码_自学python之简单计算器

    前戏就不多啰嗦了,自爆一下基础,让想学python的朋友有个信心: 我是平面设计出身,现在主要从事的工作是前端狗,所以说我基础也是很弱的,套用一句世界杯期间的广告语: 我不是天生强大,我只是天生要强! ...

  5. c51单片机矩阵键盘1602计算器_单片机中用矩阵键盘实现计算器

    计算器 1. 程序要求: 用矩阵按键实现简单的加减乘除运算. 2. 程序代码: #include #include sbit col_1=P1^4; sbit col_2=P1^5; sbit col ...

  6. 儿童吹泡泡水简单配方_儿童吹泡泡水简单配方[组图]

    儿童吹泡泡水简单配方[组图] 09-19栏目:趣历史 TAG:儿童吹泡泡水简单配方 copyright jhua.org 浑火.胶火.洗净粗.洗脚液(能够用洗澡露大概洗收火替代),然后根据4:1:2: ...

  7. 易语言制作计算软件简单步骤_一款超简单海报制作软件 快速容易设计

    RonyaSoft Poster Designer是一套简单的海报或是标签的制作软件,可以快速容易的设计.印刷具有吸引力的定制海报.横幅和标志,此软件还提供一系列的模板可让用户选择,模板内容包含商业. ...

  8. 数学建模优化模型简单例题_数学建模中简单的优化模型

    本文介绍较简单的优化模型,归结微积分中函数的机制问题,可以直接用微分法求解. 1. 存贮模型 工厂订购原料,出售商品,都需要确定贮存量. 1.1不允许缺货的存贮模型 经济批量订货公式(EOQ公式) 用 ...

  9. python制作简单软件_用Python制作简单的钢琴程序的教程

    录一段音频,把它的音高改变50次并把每一个新的音频匹配到键盘的一个键位,你就能把电脑变成一架钢琴! 一段音频可以被编码为一组数值的数组(或者列表),像这样: 我们可以在数组中每隔一秒拿掉一秒的值来将这 ...

最新文章

  1. 《基于张量网络的机器学习入门》学习笔记7
  2. 处理2D图像和纹理——显示文字
  3. HDU 1520 Anniversary party(树形dp)
  4. 从零点五开始用Unity做半个2D战棋小游戏(完)
  5. db_files 不要设置的太大,否则影响内存的使用
  6. 20135337朱荟潼——实验三
  7. Leetcode--152. 乘积最大子数组(java)
  8. linux输入ls后不显示_零基础学习之Linux基础命令小结
  9. FinTech专题:支付平台建设资金底线防火墙的杀手级设计方案
  10. maven+springboot整合mybatis(十二)
  11. C语言之字符串探究(九):空格去除——trim系列
  12. STM32工作笔记0074---UCOSIII 任务管理(中)
  13. 【K8S】K8S-网络模型、POD/RC/SVC YAML 语法官方文档
  14. python解析json串与正则匹配对比
  15. mysql拼装字段_Mysql 实现字段拼接的三个函数
  16. MFC程序版本自动升级更新
  17. 使用监听扫描枪输入事件
  18. 如何在vue中插入语音提示
  19. 误入 GitHub 游戏区,意外地收获颇丰
  20. java开发微信第三方平台 模板消息发送消息案例

热门文章

  1. 又一次摔MFC坑里了
  2. cocos2d-2.0-x-2.0.3 批处理文件create-android-project.bat 创建工程缺失lib解决方法
  3. C语言指针超全面透析(原来你一直没有搞懂C语言指针是因为没有理解其中的规律)
  4. C++单目运算符的重载与双目运算符的重载【案例】
  5. 从零开始学前端:字体图标的引入 --- 今天你学习了吗?(CSS:Day18)
  6. Python 3.6模拟输入并爬取百度前10页密切相关链接
  7. 1900页Python系列PPT分享三:选择与循环结构语法及案例(96页)
  8. oracle 32 下载,oracle 11g 32位下载
  9. java transient关键字_嗯?你真的会用 Java 序列化机制?
  10. easyui php分页,easyui datagrid分页 4、easyUI-七种布局(layout)