- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
重 庆 理 工 大 学
课程设计
课程算法与数据结构题目数据结构综合程序设计院系名称 计算机科学与工程学院班 级0837-2班学生姓名 刘天龙 学号 指导教师陈媛评阅教师陈媛时 间 2010.1.11-2010.1.15课程设计概述:
本次数据结构课程设计共完成三个题:一元稀疏矩阵多项式计算器、哈夫曼编\译码器、图的基本操作与实现。
使用语言:C
编译环境:VC++6.0
课程设计题目一
实验内容一元稀疏矩阵多项式计算器
问题描述
设计一个一元稀疏多项式简单计算器。
基本要求
一元稀疏多项式简单计算器的基本功能是:
输入并建立多项式;
输出多项式,输出形式为整数序列为:n,c1,e1,c2,e2,……,cn,en,其中n是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排序;
多项式a和b相减,建立多项a+b;
多项式a和b相减,建立多项式a-b;
计算多项式在x处的值;
计算器的仿真界面(选做);
概要设计
-=ADT=-
{
void input(Jd *ha,Jd *hb);//输入两个多项式
void sort(Jd *h);
//用冒泡排序法对一个多项式进行降序排序
void sum(Jd *ha,Jd *hb);//多项式求和
void minus(Jd *ha,Jd *hb);
//多项式相减
void output(Jd *h);
//输出多项式
void operate(Jd *ha,Jd *hb);
//对多项式进行操作
int qiuzhi(int x,Jd *ha);
//计算多项式在x处的值
void main();
主函数
}
存储结构
typedef struct node
{
int coef,exp;
struct node *next;
}Jd;
流程图
1. dnode *creat()//多项式的创建, 即输入两个多项式
h while (项数MAXN) 输入多项式的系数和指数 p-next=h-next; h-next=p; 继续输入 return h;
2. void sort(dnode *h)//采用冒泡法对链表每一项重新排序//
while(p-next!=NULL)
p=p-next; //寻找尾结点 pi=p;指向最后一次交换的位置,初值为表尾 while(pi!=h-next) //外层循环,比较趟数 for(p=h-next;p!=pi;p=p-next)
内层循环,前后两两相比 swap(p,q); pl=p; //调用交换函数 pi=pl;
3. dnode *operate(dnode *a,dnode *b)//稀疏多项式计算//while(pq) 比较对应两项的指数 x=p-c+q-c; if(fabs(x)1e-5) p=p-next;q=q-next; if(x!=0) 将和链接到新的链表中 else if(p-eq-e)p链接到新的链表中,p后移,q不动 else if(p-eq-e)p链接到新的链表中,q后移,p不动 ++c-c; if(q!=NULL) t-next=q;++c-c; if(p!=NULL) t-next=p;++c-c;
4. float qiuzhi(int x,dnode *h) //求多项式在x处的值if(p==NULL) return 0; while(p) if(p-e==0) sum+=p-c; elsesum+=(p-c)*(pow(x,p-e));p=p-next; return sum;详细设计
dnode *creat()//多项式的创建, 即输入两个多项式
{
dnode *h,*p;
int e,i,n;//n为多项式的项数
float c; //c为多项式的系数
h=(dnode *)malloc(sizeof(dnode));//分配头节点
h-next=NULL;
do//当n小于1,则重新输入
{printf(请输入多项式的项数n:);
scanf(%d,n);
}while(n1);
for(i=1;i=n;i++)
{
printf(请输入第%d项的系数c和指数e:,i);
scanf(%f%d,c,e);
p=(dnode *)malloc(sizeof(dnode));
p-c=c;p-e=e;
p-next=h-next;//用头插法建立链表//
h-next=p;
}
return h;
}
//*********
文档评论(0)