广东工业大学数据结构实验报告(12届)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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->expexp)

{

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;

相关文档
最新文档