| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3249 人关注过本帖
标题:[求助]怎样用一个链表来编写一个多项式的加减乘法运算????????
只看楼主 加入收藏
lixa761
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-9-26
收藏
 问题点数:0 回复次数:5 
[求助]怎样用一个链表来编写一个多项式的加减乘法运算????????

本人要做一个多项式运算的作业,可是 不会做,希望各位大侠帮忙。

就是用链表来编写一个程序,实现多项式的各项运算。其中要用到链表类,链表游标类,链表节点类。

多项式这样输入的:例如2x^3+3x^8

希望可以给出完整的程序。希望高手速回。谢谢!!!!!!

搜索更多相关主题的帖子: 链表 多项式 乘法 运算 编写 
2004-09-28 13:15
anhua200hl
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2004-10-10
收藏
得分:0 

用栈不是更好做吗?

----------------------------------

我是菜鸟,我想飞.................................


我是菜鸟,我想飞..............................
2004-10-13 18:14
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

#include<iostream.h>

typedef int ElemType;

struct Pnomial //Pnomial=Polynomial(多项式) { ElemType co,de; //co=coefficient(系数), de=degree(次数)

Pnomial* next; };

void main() { Pnomial *ph,*p,*q; //ph表头指针,p移动指针,q临时储存结点

ph=p=new Pnomial;

cout<<"\nthe 1st Polynomial:"<<endl; cout<<"give coefficient value:"<<endl;

while(p->co!=0) { q=new Pnomial;

cin>>q->co; if(q->co!=0) { cout<<"x^"; cin>>q->de; cout<<"+"; }

p->next=q; p=q; }

q->de=886; //一个链表储存两个多项式,以X的886次方为界

cout<<"the 1st Polynomial end."<<endl; cout<<"\nthe 2nd Polynomial:"<<endl; cout<<"give coefficient value:"<<endl;

do { q=new Pnomial;

cin>>q->co; if(q->co!=0) { cout<<"x^"; cin>>q->de; cout<<"+"; }

p->next=q; p=q; } while(p->co!=0);

cout<<"the 2nd Polynomial end."<<endl;

p->next=NULL; p=ph->next;

cout<<'\n'<<endl; cout<<"the 1st Polynomial:"<<endl;

while(p->next!=NULL) { if(p->de==886) { cout<<'\n'<<endl; cout<<"the 2nd Polynomial:"<<endl; p=p->next; } else if(p!=ph->next) cout<<" + ";

if(p->co!=1) cout<<p->co;

if(p->de!=0) { cout<<"x"; if(p->de!=1) cout<<"^"<<p->de; }

p=p->next; } cout<<'\n'<<endl;

//以上代码实现输入和打印

//以下代码实现系数相加并打印结果

p=ph->next; Pnomial *re,*di,*temp; //新建一个链表储存结果 //re=result(结果), di=displace(移动指针)

Pnomial *ap; //删除链内结点时临时存放指针位置的链外结点

ap=NULL;

int counter=0; //计数变量,记录p赋值给temp的起始结点

re=di=new Pnomial;

while(p->next!=NULL) { temp=new Pnomial; temp->co=p->co; temp->de=p->de;

while(p->next!=NULL) { ap=p; //暂时存放前一个结点的指针地址

p=p->next; //当前待处理结点

if(p->de==886) continue;

if(p->de==temp->de) { temp->co=temp->co+p->co; //次数一样则加进temp->co

//实际上就是删除加了进去temp->co的结点 if(p==NULL) ap->next=p; //NULL时不用跳过 else ap->next=p->next; //跳过p指向p->next p=ap; //把地址还给p指针 } }

di->next=temp; di=temp;

p=ph->next; //p指针每处理完一次都先返回到表头结点

counter++; for(int i=0;i<counter;i++) p=p->next;

if(p->de==886) { p=p->next; counter++; } }

di->next=NULL;

cout<<"the result Polynomial:"<<endl;

di=re->next; //di回到表头结点,准备打印结果多项式

while(di!=NULL) { if(di!=re->next) cout<<" + ";

if(di->co!=1) cout<<di->co;

if(di->de!=0) { cout<<"x"; if(di->de!=1) cout<<"^"<<di->de; }

di=di->next; }

cout<<'\n'<<endl; }

2004-10-17 09:46
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
楼上的只有加减,你的作业吧?
2004-10-17 09:47
kycchao
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2004-9-24
收藏
得分:0 
??
2004-11-28 19:41
nick7281
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-13
收藏
得分:0 
第3楼的代码可以运行,但是结果不能显示.

2006-11-13 11:25
快速回复:[求助]怎样用一个链表来编写一个多项式的加减乘法运算???????? ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030660 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved