1. 一元多项式的表示及其运算 1
1.1 问题描述 1
1.2 设计方案与概要设计 1
1.3 详细设计 2
1.4 程序运行说明与结果 11
2. 集合的表示与运算 12
2.1 问题描述 12
2.2 设计方案与概要设计 12
2.3 详细设计 13
2.4 程序运行说明与结果 18
3.总结与分析 19
1)输入并建立一元多项式。
2)输出一元多项式。
3)多项式实现相加、相减及相乘。
4)输入多项式中的未知数,计算多项式的结果。
5)退出程序。
程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。
程序执行的命令包括:
1)多项式的项作为linklist的数据元素,coef为系数,浮点型,expn为指数,整型。
2)构造一个表示一元多项式链表la,存储多项式的项数、系数和指数等数据。
3)利用两个多项式的结点构成"和多项式",addpolyn(&pa,&pb),一元多项式pa和pb已存在,完成多项式相加运算,即:pa = pa+pb,并销毁一元多项式pb。
4)利用两个多项式的结点构成"差多项式",利用两个多项式的结点构成"和多项式",subtractpolyn(&pa,&pb),一元多项式pa和pb已存在,完成多项式相减运算,即:pa = pa-pb,并销毁一元多项式pb。
5)利用两个多项式的结点构成"积多项式",利用两个多项式的结点构成"和多项式",multiplypolyn(&pa,&pb),一元多项式pa和pb已存在,完成多项式相乘运算,即:pa = pa×pb,并销毁一元多项式pb
6)制作标题栏。
7)使用switch语句实行多分支选择操作,当case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句,输出提示用户出错,并重新输入。
#include<>
#include<>
#include<>
typedef struct lnode {
float coef;
int expn;
struct lnode *next;
lnode;
lnode* initpolyn(lnode *la,int n) {
if(n <=0) return null;
lnode *h = la = lnode*)malloc(sizeof(lnode)),lb;
la->coef = 0.0;
int i;
printf("依次输入%d个非零项(每项前一个为系数,后一个为指数)",n);
for (i = 1; i <=n; +i) {
scanf("%f%d",&la->coef,&la->expn);
if(la->coef)
lb = la;
la = la->next = lnode*)malloc(sizeof(lnode));
lb->next = null;
free(la);
return h;
lnode* selsort(lnode *h) {
lnode *g, *la, *lb;
if(!h) return null;
float f;
int i, fini = 1;
for(g = h;g->next&&fini;g = g->next) {
fini = 0;
for(la = h,lb = h->next;lb;la = la->next,lb = lb->next)
if (la->expn < lb->expn) {
f = la->coef;i = la->expn;
la->coef = lb->coef;la->expn = lb->expn;
lb->coef = f;lb->expn = i;
fini = 1;
for(g = h,la = g->next;la;)
if(g->expn==la->expn) {
g->coef +=la->coef;
g->next = la->next;
lb = la;
la = la->next;
free(lb);
else if(g->next) {
g = g->next;
la = la->next;
return h;
void printfpoly(lnode *la) {
lnode *lb = la;
if(!lb) {
putchar('0');
return;
if(lb->coef!=1) {
printf("%g",lb->coef);
if(lb->expn==1) putchar('x');
else if(lb->expn) printf("x^%d",lb->expn);
else if(!lb->expn) putchar('1');
else if(lb->expn==1) putchar('x');
else printf("x^%d",lb->expn);
lb = lb->next;
while (lb) {
if(lb->coef > 0) putchar('+
if(lb->coef!=1) {
printf("%g",lb->coef);
if(lb->expn==1) putchar('x');
else if(lb->expn) printf("x^%d",lb->expn);
else if(!lb->expn) putchar('1');
else if(lb->expn==1) putchar('x');
else printf("x^%d",lb->expn);
lb = lb->next;
compare(lnode *a, lnode *b) {
if (a->expn < b->expn) return -1;
if (a->expn > b->expn) return 1;
return 0;
lnode* addpolyn(lnode *pa, lnode *pb) {
lnode *h, *qa = pa, *qb = pb, *la, *lb;
float sum;
h = la = lnode*)malloc(sizeof(lnode));
la->next = null;
while (qa &&qb) {
switch (compare(qa,qb))
case -1:
la->next = qb;
la = qb;
qb = qb->next;
break;
case 0:
sum = qa->coef + qb->coef;
if (sum !=0.0) {
la->next = qa;
qa->coef = sum;
la = qa;
qa = qa->next;
else {
lb = qa;
qa = qa->next;
free(lb);
lb = qb;
qb = qb->next;
free(lb);
break;
case 1:
la->next = qa;
la = qa;
qa = qa->next;
break;
if (pa) la->next = qa;
if (pb) la->next = qb;
lb = h;
h = h->next;
free(lb);
return h;
lnode* add(lnode *pa, lnode *pb) {
int n;
puts("再输入1个一元多项式的项数");
scanf("%d",&n);
pb = initpolyn(pb,n);
pb = selsort(pb);
printfpoly(pa);
if(pb &&pb->coef>0) printf("
printfpoly(pb);
pa = addpolyn(pa,pb);
printf("
pa = selsort(pa);
printfpoly(pa);
return pa;
lnode* subtractpolyn(lnode *pa, lnode *pb) {
lnode *la = pb;
while(la) {
la->coef *=1;
la = la->next;
return addpolyn(pa,pb);
lnode* subtract(lnode *pa, lnode *pb) {
int n;
puts("再输入1个一元多项式的项数");
scanf("%d",&n);
pb = initpolyn(pb,n);
pb = selsort(pb);
printfpoly(pa);
printf("
putchar('(printfpoly(pb);putchar(')
pa = subtractpolyn(pa,pb);
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...