广东工业大学数据结构实验报告(12届)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
广东工业大学数据结构实验报告(1)
学院:自动化专业:12级物联网3班
姓名:xxx 学号:xxx 老师:张小波
实验日期:2014年6月21日实验地点:实二203 成绩评定:实验题目:求一个正整数的各位数字之和
一、实验目的
求一个正整数的各位数字之和。
二、实验软件环境
1.计算机每人一台。 2.软件:Visual Studio 2012
三、实验内容
#include
int func(int num)
{
int s=0;
do
{
s+=num%10;
num/=10;
} while(num);
return(s);
}
void main()
{
int n;
printf("输入一个整数:");
scanf("%d",&n);
printf("各位数字之和:%d\n",func(n));
printf("\n");
}
四、实验结果和分析
当输入一个整数的时候,得出的是该整数的所有数字的和
五、实验心得体会
本实验过程中,感觉能用简单的方法实现程序就应该用简单的,一开始我用了多个for循环,感觉没必要,就用了do-while循环,因此保持程序的简洁,精悍是最应该的,过于冗杂的程序不仅臃肿,而且难以分析,分享。
广东工业大学数据结构实验报告(2)
学院:自动化专业:12级物联网3班
姓名:xxx 学号:xxx 老师:张小波
实验日期:2014年6月21日实验地点:实二203 成绩评定:实验题目:求两个多项式的相加运算
一、实验目的
熟悉并学会使用多项式的表示方法以及计算方法
二、实验软件环境
1.计算机每人一台。 2.软件:Visual Studio 2012
三、实验内容
#include
#include
#define MAX 20 //多项式最多项数
typedef struct //定义存放多项式的数组类型
{
double coef; //系数
int exp; //指数
} PolyArray[MAX];
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之后 r=s; } r->next=NULL; //终端结点next域置为NULL } void Sort(PolyNode *&head) //按exp域递减排序 { PolyNode *p=head->next,*q,*r; if (p!=NULL) //若原单链表中有一个或以上的数据结点 r=p->next; //r保存*p结点后继结点的指针 p->next=NULL; //构造只含一个数据结点的有序表 p=r; while (p!=NULL) { r=p->next; //r保存*p结点后继结点的指针 q=head; while (q->next!=NULL && q->next->exp>p->exp) q=q->next; //在有序表中找插入*p的前驱结点*q p->next=q->next; //将*p插入到*q之后 q->next=p; p=r; } } } void Add(PolyNode *ha,PolyNode *hb,PolyNode *&hc) //求两有序集合的并{ PolyNode *pa=ha->next,*pb=hb->next,*s,*tc; double c; hc=(PolyNode *)malloc(sizeof(PolyNode)); //创建头结点 tc=hc; while (pa!=NULL && pb!=NULL) { if (pa->exp>pb->exp) { s=(PolyNode *)malloc(sizeof(PolyNode)); //复制结点 s->exp=pa->exp;s->coef=pa->coef; tc->next=s;tc=s; pa=pa->next; } else if (pa->exp { s=(PolyNode *)malloc(sizeof(PolyNode)); //复制结点 s->exp=pb->exp;s->coef=pb->coef; tc->next=s;tc=s; pb=pb->next; } else //pa->exp=pb->exp { c=pa->coef+pb->coef; if (c!=0) //系数之和不为0时创建新结点 { s=(PolyNode *)malloc(sizeof(PolyNode)); //复制结点 s->exp=pa->exp;s->coef=c; tc->next=s;tc=s;