数据结构课程设计

发布 2022-10-01 21:03:28 阅读 1683

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 初始化时每个方格都是关闭的,一个...