(整理)一元稀疏多项式计算器
- 格式:doc
- 大小:328.50 KB
- 文档页数:24
云南大学软件学院数据结构实验报告
(本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □
学期:2012秋季学期
任课教师:
实验题目: 一元稀疏多项式计算器
小组长:
联系电话:
电子邮件:
完成提交时间:2012 年 11 月 10 日
云南大学软件学院2012学年秋季学期
《数据结构实验》成绩考核表
学号: 20111120 姓名:本人承担角色:算法设计整体流程控制
综合得分:(满分100分)
指导教师:
年月日
云南大学软件学院2010学年秋季学期
《数据结构实验》成绩考核表
学号: 20111120 姓名:本人承担角色:函数实现整体流程控制
综合得分:(满分100分)
指导教师:
年月日
(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%)
多项式计算器的呈现方式是用控制台程序呈现,;多项式的加减乘以及求导的函数中利用链表保存头结点以及循环结构保存和输出数据;还有利用一个简单的降序排列的函数,在输出时更加明了。
二、【实验设计(Design)】(20%)
在头文件中申明变量,源文件中创建指数和系数的指针的头结点,并为此申请空间。首先考虑指数为0,1和系数为0,1时的特殊情况的表示;然后利用SORT函数对输出时进行降序排列;其次就是加减乘以及求导函数的实现;最后是一个输出界面的设计。
三、【实现描述(Implement)】(30%)
//--------函数原型说明--------
typedef struct Node
{
double xishu;
int zhishu;//数据域
//int data;
struct Node* pnext;//指针域
}Node,*pNode;
pNode phead=(pNode)malloc(sizeof(Node));//创建头节点
pNode creat_list(void);创建链表
void traverse_list(pNode phead);//遍历链表
pNode sort(pNode phead);//对链表进行降序排列
pNode add(pNode phead1,pNode phead2);//两个多项式相加
pNode hebing(pNode phead)//合并同类项
pNode multi(pNode phead1,pNode phead2);//多项式相乘
pNode sub(pNode phead1,pNode phead2);//多项式相减
//多项式求导没有声明和定义函数,而是直接卸载程序里了
//------关键操作的实现-------
1.对链表的声明和定义和对创建函数的定义。
#include"stdafx.h"
#include"cpxNum.h"
typedef struct Node
{
double xishu;
int zhishu;//数据域
//int data;
struct Node* pnext;//指针域
}Node,*pNode;
pNode creat_list(void)
{
int len;
int i;
//int val;
int zhishu;
double xishu;
pNode phead=(pNode)malloc(sizeof(Node));//分配了一个不存在有效数据的头结点pNode ptail=phead;
ptail->pnext=NULL;
if(phead==NULL)
{
cout<<"分配失败< exit(-1); } cout<<"请输入想输入多项式的项数"< cin>>len; for(i=0;i { cout<<"请?输º?入¨?第̨²"< cin>>xishu; cout<<"请?输º?入¨?第̨²"< cin>>zhishu; pNode pnew=(pNode)malloc(sizeof(Node)); if(pnew==NULL) { cout<<"分¤?配?失º¡ì败㨹"< exit(-1); } pnew->xishu=xishu; pnew->zhishu=zhishu; ptail->pnext=pnew; pnew->pnext=NULL; ptail=pnew; } phead->zhishu=len; return phead; } 2.对多项式遍历,排序,同类项合并的定义 1.多项式的遍历 //将多项式分为第一项和其余项两部分考虑,另外考虑指数=0,指数=1,系数=1,系数=0等情况。