数据结构课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教学单位计算机与信息科学学院
学生学号014301754127
数据结构(课程设计)
学生姓名
专业名称软件工程
指导教师
2016年5月28日
目录
1.多项式的基本运算 (1)
1.1 实验目的 (1)
1.2 实验内容 (1)
1.3 实验方法 (1)
1.4 实验结果 (7)
1.5 小结 (7)
2.栈的应用—逆波兰式求值 (7)
2.1 实验目的 (7)
2.2 实验内容 (7)
2.3 实验方法 (8)
2.4 实验结果 (14)
2.5 小结 (15)
3.图的应用—简易的社交网络图 (15)
3.1 实验目的 (15)
3.2 实验内容 (15)
3.3 实验方法 (16)
3.4 实验结果 (17)
3.5 小结 (17)
4 .课程设计四、哈夫曼编码 (17)
4.1 实验目的 (17)
4.2 实验内容 (17)
4.3 实验方法 (18)
4.4 实验结果 (23)
4.5 小结 (23)
5 .哈希表的相关运算 (24)
5.1 实验目的 (24)
5.2 实验内容 (24)
5.3 实验方法 (24)
5.4 实验结果 (27)
5.5 小结 (28)
6 .排序方法 (28)
6.1 实验目的 (28)
6.2 实验内容 (28)
6.3 实验方法 (28)
6.4 实验结果 (33)
6.5 小结 (33)
1.多项式的基本运算
1.1 实验目的
掌握线性表的链式存储结构和线性表的典型应用—多项式求和、差运算,通过实验进一步加深对线性表的存储结构的理解与熟悉。
1.2 实验内容
链式存储结构的实现:
已知:f(x)=100x^100+5x^50-30x^10+10,
g(x)=150x^90-5x^50+40x^20+20x^10+3x,
求和与差。
解题思路:
定义一个结构体数组,p存储系数,q存储指数。分别输出两次输入的多项式。将两次输入的多项式的指数按从大到小的顺序进行排列,同时相应的系数要进行交换。输出时如果进行如果当前该项与下一项的的系数相同,将两项系数相加后输出,并跳过下一项,如果不相等,直接输出。输出时需注意的问题:当系数为0时,该项不输出当系数为负数时,不要再在前面输出+。
1.3实验方法
#include
#include
#define MAX 20 //多项式最多项数
typedef struct //定义存放多项式的数组类型
{
double coef; //系数
int exp; //指数
} PolyArray;
typedef struct pnode //定义单链表结点类型,保存多项式中的一项,链表构成多项式
{
double coef; //系数
int exp; //指数
struct pnode *next;
} PolyNode;
void DispPoly(PolyNode *L) //输出多项式
{
bool first=true; //first为true表示是第一项
PolyNode *p=L->next;
while (p!=NULL)
{
if (first)
first=false;
else if (p->coef>0)
printf("+");
if (p->exp==0)
printf("%g",p->coef);
else if (p->exp==1)
printf("%gx",p->coef);
else
printf("%gx^%d",p->coef,p->exp);
p=p->next;
}
printf("\n");
}
void DestroyList(PolyNode *&L) //销毁单链表
{
PolyNode *p=L,*q=p->next;
while (q!=NULL)
{
free(p);
p=q;
q=p->next;
}
free(p);
}
void CreateListR(PolyNode *&L, PolyArray a[], int n) //尾插法建表
{
PolyNode *s,*r;
int i;
L=(PolyNode *)malloc(sizeof(PolyNode)); //创建头结点
L->next=NULL;
r=L; //r始终指向终端结点,开始时指向头结点for (i=0; i { s=(PolyNode *)malloc(sizeof(PolyNode));//创建新结点 s->coef=a[i].coef; s->exp=a[i].exp; r->next=s; //将*s插入*r之后