下载此文档

数据结构实验报告.docx


文档分类:高等教育 | 页数:约60页 举报非法文档有奖
1/60
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/60 下载此文档
文档列表 文档介绍
中国科学技术大学
数据结构实验报告
程序设计实验
实验一多项式运算器
实验二二叉树的操作
Will
指导老师顾卫兵
2012/4/20
多项式运算器
前言
线性表是最简单、最常用的一种数据结构。一元稀疏多项式可以用一个线性链表表示,本实验结合C语言知识,通过对线性表的操作实现一元稀疏多项式的创建、销毁、清空、复制、基本运算等功能。
多项式用带头结点的单链表Polynomial表示,链表结点按指数有序排列。为方便对多个多项式进行各项操作,采用头指针数组head[MAX+1]来存储各多项式链表的头指针。
coef
expn
next
Polynomial
#define MAX 10 //头指针数组的大小
typedef struct Polynomial //多项式的数据类型定义
{
float coef; //系数
int expn; //指数
struct Polynomial *next;
}*Polyn,Polynomial;
Polyn head[MAX+1]; //头指针数组
程序功能
用户界面采用菜单驱动方式,界面简洁而不简约,方便操作,人机互动性、用户体验性强。
菜单界面及所包含的程序功能如下:
+++++++++++++++++++++++++++++++++
欢迎使用一元多项式运算器
;
;
;
;
;
;
;
;
;
;
;
;
;
;
+++++++++++++++++++++++++++++++++
请选择你想进行的操作:
程序原文
//头文件
#include<>
#include<>
#include<>
#include<>
#define MAX 10 //头指针数组的大小
//多项式的数据类型定义
typedef struct Polynomial
{
float coef; //系数
int expn; //指数
struct Polynomial *next;
}*Polyn,Polynomial;
Polyn head[MAX+1]; //头指针数组,用来标记多项式
//创建多项式
void OrderInsert(Polyn &p,Polyn &h) //头结点是h,新结点p
{ //顺序插入结点
if(p->coef==0)
free(p); //若系数为0释放结点
else
{
Polyn q1,q2;
q1=h;
q2=h->next;
while(q2&&p->expn>q2->expn)
{ //查找插入位置
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;
}
}
}
void CreatePolyn(Polyn &p)
{ //建立一个头指针为head[i]一元多项式
Polyn q;
q=(Polyn)malloc(sizeof(struct Polynomial));
printf(" 请输入某项的系数与指数:");
scanf("%f %d",&q->coef,&q->expn);
while(q->coef!=0)
{
OrderInsert(q,p); //调用OrderInsert函数插入结点
q=(Polyn)malloc(sizeof(struct Polynomial));//建立新结点以接收数据
printf(" 请输入某项的系数与指数:");
scanf("%f %d",&q->coef,&q->expn);
}
}
void Create()
{ //创建函数
int i=0,n=0;
printf(" 请输入你想创建的多项式序号(1-%d):",MAX);
scanf("%d",&i);
CreatePolyn(head[i]);

数据结构实验报告 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数60
  • 收藏数0 收藏
  • 顶次数0
  • 上传人63229029
  • 文件大小192 KB
  • 时间2017-09-30