数据结构-实验报告一(1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请一次性输入多项式各幂次的系数
常数项:5
1次项:4
2次项:6
3次项:9
4次项:5
请输入一元多项式的最高幂次:2
请一次性输入多项式各幂次的系数
常数项:5
1次项:9
2次项:5
相加后的多项式为:
f=10.000000+13.000000x+11.000000xx+9.000000xxx+5.000000xxxx
{
int i,n;
printf("请输入一元多项式的最高幂次:");
scanf("%d",&n);
printf("请一次性输入多项式各幂次的系数\n");
printf("常数项:");
scanf("%f",&f->a[0]);
for(i=1;i<=n;i++)
{
printf("%d次项:",i);
scanf("%f",&f->a[i]);
#define N 6
void bubble_sort(int a[],int n)
{
int i,j,nTemp;
for(i=n-1;i>=1;--i)
{
for(j=0;j<i;++j)
{
if(a[j]>a[j+1])
{
nTemp=a[j];a[j]=a[j+1];a[j+1]=nTemp;
}
}
}
}
The results are:nMax=7 nMin=5
(7)实验结果分析:
由于输入一组数据要存入数组中,所以开始需要建立数组ptArr,又因为需要将数据元素的个数动态地由输入函数完成,所以这个ptArr数组是指针型的*ptArr,于是分配他的动态储存空间,ptArr=(int *)malloc(sizeof(int)*n),建立求数据的最大值、最小值的函数get Max_Min,此函数思想是通过指针来完成,先声明两个指针型变量*nMin,*nMax,初始化*nMax=*nMin=*ptArr,
{
int k; float x;
Lnode *f1,*f2;
printf("请输入进行的操作:\n");
printf("1------------多项式求值;\n");
printf("2------------两多项式求和;\n");
scanf("%d",&k); switch(k)
{
case 1:
printf("%f\n",sum);
}
void Plus(Lnode *f1,Lnode *f2)//一元多项式的相加
{
int i,j;
Lnode *f;
f=(Lnode*)malloc(sizeof(Lnode));
if(f1->length<=f2->length)
{
for(i=0;i<=f1->length;i++)
3.一元多项式求值与求和
(1)问题描述:多项式求值与求和
(2)数据结构:数组
(3)源代码
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
typedef struct
{
float a[MAX];
int length;
}Lnode;
void Create(Lnode *f)//一元多项式的创建
return *ptArr;
}
void inputArray(int *ptArr,int n)
{
/*inputArray values*/
int i;
for(i=0;i<n;i++)
{
printf("Please input element %d's value:",i);
scanf("%d",&ptArr[i]);
}
f->length=n;
}
void Calculate(Lnode *f,float x)//一元多项式的求值
{
int i,j;
float t,sum=0;
for(i=0;i<=f->length;i++)
{
t=f->a[i];
for(j=i;j>0;j--)
t*=x;
sum+=t;
}
printf("一次多项式的值为:");
}
}
代码运行:
请输入进行的操作:
1------------多项式求值;
2------------两多项式求和;
1
请输入一元多项式的最高幂次:3
请一次性输入多项式各幂次的系数
常数项:5
1次项:5
2次项:4
3次项:9
请输入x的值:7
一次多项式的值为:3323.000000
2
请输入一元多项式的最高幂次:4
(3)抽象数据类型的定义和表示、实现;
(4)加深对数据的逻辑结构和物理结构之间关系的理解;
(5)初步建立起时间复杂度和空间复杂度的概念。
二实验内容:(第1题必做,第2、3、4任选一个)
(1)输入一组数据存入数组中,并将数据元素的个数动态地由输入函数完成。求输入数据的最大值、最小值,并通过函数参数返回所求结果;
for(i=1;i<=f->length;i++)
{
if(f->a[i]>0)
printf("+%f",f->a[i]);
if(f->a[i]<0)
printf("%f",f->a[i]);
for(j=1;j<=i;j++)
printf("x");
}
printf("\n");
}
void main()//主函数
void bubble_sort(int a[],int n)
{
int i,j,nTemp;
for(i=n-1;i>=1;--i)
{
for(j=0;j<i;++j)
{
if(a[j]>a[j+1])
{
nTemp=a[j];a[j]=a[j+1];a[j+1]=nTemp;
}
}
}
}
(5)源程序代码
#include<stdio.h>
if(*nMax<ptArr[i]) *nMax=ptArr[i],
if(*nMin>ptArr[i]) *nMin=ptArr[i]
最后通过函数参数返回所求结果
2:冒泡法,
(1)问题描述:排序
(2)算法思想
用C语言程序中学过的冒泡法对输入的数据进行排序,并输出排序后的结果
(3)数据结构:数组
(4)算法描述
求最大值,最小值的算法:
void getMax_Min(int *ptArr,int n,int *nMax,int *nMin)
{
/*getMax_Min*/
int i;
*nMax=*nMin=*ptArr;
for(i=1;i<n;i++)
{
if(*nMax<ptArr[i]) *nMax=ptArr[i];
int main(void)
{
int a[N];
int i,j;
printf("please input values::\n");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
bubble_sort(a,N);
for(i=0;i<N;i++)
printf("%4d",a[i]);
f1=(Lnode *)malloc(sizeof(Lnode)); Create(f1);
printf("请输入x的值:");
scanf("%f",&x);
Calculate(f1,x);
break;
case 2:
f1=(Lnode *)malloc(sizeof(Lnode));
f2=(Lnode *)malloc(sizeof(Lnode)); Create(f1); Create(f2); Plus(f1,f2); break;
return 0;
}
(6)代码测试
please input values::
12 16 789 56 89 78
12 16 56 78 89 789
(7)实验结果分析:
冒泡法思想:第一个数和第二个数相比较,较小的那个数上浮,然后第二个数再和第三个数比较,依次,重复n-1次,
该算法的时间复杂度n*n。
}
return;
}Baidu Nhomakorabea
void getMax_Min(int *ptArr,int n,int *nMax,int *nMin)
{
/*getMax_Min*/
int i;
*nMax=*nMin=*ptArr;
for(i=1;i<n;i++)
{
if(*nMax<ptArr[i]) *nMax=ptArr[i];
if (a[j]>a[j+1]) {a[j]<---->a[j+1];change=TRUE;}
}
}//bubble sort
三实验准备:
1)计算机设备;2)程序调试环境的准备,如TC环境;3)实验内容的算法分析与代码设计与分析准备。
四实验步骤:
1.安装TC并设置好环境,如果已安装好,可以跳过此步;
(2)用C语言程序中学过的冒泡法对输入的数据进行排序,并输出排序后的结果(算法的类C描述如下)。
void bubble_sort(int a[],int n)
{
for(i=n-1,change=TRUE;i>=1 && change;--i)
{
change=FALSE;
for (j=0;j<i;++j)
for(i=1;i<n;i++)
{
if(*nMax<ptArr[i]) *nMax=ptArr[i];
if(*nMax>ptArr[i]) *nMin=ptArr[i];
}
return;
}
对实验内容(2)的操作步骤:1)完成算法的C实现;2)分析其时间复杂度和空间复杂度。
3.编写实验报告。
五:实验过程:
if(*nMax>ptArr[i]) *nMin=ptArr[i];
}
return;
}
(5)源程序代码:
#include<stdio.h>
int initArray(int n)
{
int *ptArr;
/*malloc array's memory*/
ptArr=(int*)malloc(sizeof(int)*n);
实验一,ADT的类C程序的转换实验
学期:2019_2020第2学期
课程名称:数据结构专业:级班
实验编号01实验项目:ADT的类C描述向C程序的转换实验指导冯山
姓名:王朝辉学号:2017060231成绩:
一:实验目的:
(1)复习C语言的基本用法;
(2)学会用类C的语言对算法进行描述的方法,将类C算法转换成C源程序的方法和过程;
f->a[i]=f1->a[i]+f2->a[i];
for(i=f1->length+1;i<f2->length;i++)
f->a[i]=f2->a[i];
f->length=f2->length;
}
else
{
for(i=0;i<=f2->length;i++)
f->a[i]=f1->a[i]+f2->a[i];
2.录入程序代码并进行调试和算法分析;
对实验内容(1)的操作步骤:1)用类C语言描述算法过程;2)用C语言环境实现该算法。
求最大值,最小值的算法:
void getMax_Min(int *ptArr,int n,int *nMax,int *nMin)
{
/*getMax_Min*/
int i;
*nMax=*nMin=*ptArr;
inputArray(ptArr,n);
getMax_Min(ptArr,n,&nMax,&nMin);
/*output*/
printf("The results are:nMax=%d nMin=%d\n",nMax,nMin);
/*free*/
free(ptArr);
return 0;
}
(6)代码测试:
for(i=f2->length+1;i<=f1->length;i++)
f->a[i]=f1->a[i];
f->length=f1->length;
}
printf("相加后的多项式为:\n");
if(f->a[0]!=0)
printf("f=%f",f->a[0]);
else
printf("f=");
Input n::5
Please input element 0's value:5
Please input element 1's value:4
Please input element 2's value:6
Please input element 3's value:5
Please input element 4's value:7
if(*nMax>ptArr[i]) *nMin=ptArr[i];
}
return;
}
int main(void)
{
int i,n,nMax,nMin;
int *ptArr;
/*give the n value*/
printf("Input n::");
scanf("%d",&n);
ptArr=initArray(n);
1求最大值,最小值,
(1)问题描述:
输入一组数据存入数组中,并将数据元素的个数动态地由输入函数完成。求输入数据的最大值、最小值,并通过函数参数返回所求结果;
(2)算法思想:
建立ptArr输入数据比较输入数据的大小通过函数参数返回所求结果输出结果释放ptArr
(3)数据结构:指向数组的指针
(4)算法描述
相关文档
最新文档