柳晨光数据结构作业.doc_第1页
柳晨光数据结构作业.doc_第2页
柳晨光数据结构作业.doc_第3页
柳晨光数据结构作业.doc_第4页
柳晨光数据结构作业.doc_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。数据结构作业11303070332 柳晨光P20_13/编写一个函数,将一个头结点指针为a的单链表A分成两个单链表A和B,其头结点分别为a和b。使得A链表中含有原有/链表A中序号为奇数的元素,而B着那个为偶数 保持原有顺序#include#include#includetypedef struct Nodeint data;struct Node *next;node;node * init(node *a,int n)int i;node *p,*tail;tail=a;for(i=0;idata=rand()%100+0;tail-next=p;tail=p;p-next=NULL;return a;void Print(node *p)p=p-next;while(p!=NULL)printf(%d ,p-data);p=p-next;printf(n);void Transport(node *p1,node *p2)node *tail,*p,*q;tail=p2;p1=p1-next;while(p1-next!=NULL)/q=p1-next;if(p1-data)%2=0)q=p1;p=(node *)malloc(sizeof(node);p-data=q-data;printf(,q-data);tail-next=p;tail=p;p1=q-next;free(q);p-next=NULL;/p1=p1-next;p1=p1-next;void main()/node *a,*p1,*tail1,*b,*p2,*tail2;node *a,*b;a=(node *)malloc(sizeof(node);b=(node *)malloc(sizeof(node);a-next=NULL;b-next=NULL;init(a,5);Print(a);Transport(a,b);printf(A: );Print(a);printf(B: );Print(b);/printf(%d,0%2);P96_1/构造一个包含N个元素的一维整型随机数组无重复#include#includevoid init(int array,int n);/随机数组生成void function1(int array,int n);/(1)使用下标法输出数组元素值void function2(int array,int n);/(2)使用指针法输出所有数组元素的值void function3(int array,int n);/(3)对数组中所有偶数求和void function4(int array,int n);/(4)对数组中所有奇数求和void function5(int array,int n);/(5)将数组中的所有数扩大K倍void function6(int array,int n);/(6)把数组中偶数位置的元素加起来void function7(int array,int n);/(7)找出数组中最大的值void function8(int array,int n);/(7)找出数组中最小的值void function9(int array,int n);/(9)在数组中搜索指定元素,看其是否存在void main() int array10,n; n=10; init(array,n); function1(array,n); function2(array,n); function3(array,n); function4(array,n); function5(array,n); function6(array,n); function7(array,n); function8(array,n); function9(array,n);/随机数组生成void init(int array,int n) int i,j; for(i=0;i0;j-) if(arrayi=arrayj) i-; break; printf(随机生成的数组: ); for(i=0;in;i+) printf(%d ,arrayi); printf(n);/(1)使用下标法输出数组元素值void function1(int array,int n) int i; printf(下标法输出数组的值: ); for(i=0;in;i+) printf(%d ,arrayi); printf(n);/(2)使用指针法输出所有数组元素的值void function2(int array,int n) int *p,i; p=array; printf(指针法输出数组的值: ); for(i=0;in;i+) printf(%d ,*p); p+; printf(n);/(3)对数组中所有偶数求和void function3(int array,int n) int sum,i,temp; sum=0; for(i=0;in;i+) temp=arrayi; if(temp%2=0) sum=sum+temp; printf(数组中所有偶数之和: %d,sum); printf(n);/(4)对数组中所有奇数求和void function4(int array,int n) int sum,i,temp; sum=0; for(i=0;in;i+) temp=arrayi; if(temp%2!=0) sum=sum+temp; printf(数组中所有奇数之和: %d,sum); printf(n);/(5)将数组中的所有数扩大K倍void function5(int array,int n) int i,temp,k; k=10; printf(数组中所有数扩大%d倍后: ,k); for(i=0;in;i+) temp=arrayi; printf(%d ,k*temp); printf(n);/(6)把数组中偶数位置的元素加起来void function6(int array,int n) int sum,temp,i; sum=0; for(i=1;i=n;i+) if(i%2=0) temp=arrayi; sum=sum+temp; printf(数组中偶数位置的元素之和: %d,sum); printf(n);/(7)找出数组中最大的值void function7(int array,int n) int max,i; max=0; for(i=0;imax) max=arrayi; printf(数组中最大的值: %d,max); printf(n);/(8)找出数组中最小的值void function8(int array,int n) int min,i; min=array0; for(i=0;in;i+) if(arrayimin) min=arrayi; printf(数组中最小的值: %d,min); printf(n);/(9)在数组中搜索指定元素,看其是否存在void function9(int array,int n) int x,i,temp; printf(输入一个你想搜索的数字n); scanf(%d,&x); for(i=0;in;i+) if(x=arrayi) temp=arrayi; break; if(temp=x) printf(你搜索的数字存在!n); else printf(你搜索的数字不存在!n); printf(n);P97_2/构造一个长度不超过n的一维字符数组#includefunction1(char st,int n);/(1)使用下标法输出字符串function2(char st,int n);/(2)使用指针法输出该字符串function3(char st,int n);/(3)统计字符串中小写字母的个数function4(char st,int n);/(4)统计元音字母个数(小写),重复不计数function5(char st,int n);/(5)找出字符串中的最大值function6(char st,int n);/(6)找出字符串中的最小值void main() char st10=bcdefa4321; int n=10; function1(st,n); function2(st,n); function3(st,n); function4(st,n); function5(st,n); function6(st,n);/(1)使用下标法输出字符串function1(char st,int n) int i; printf(下标法输出的字符串:); for(i=0;in;i+) printf(%c,sti); printf(n);/(2)使用指针法输出该字符串function2(char st,int n) char *p; int i; p=st; printf(指针法输出的字符串:); for(i=0;in;i+) printf(%c,*p); p+; printf(n);/(3)统计字符串中小写字母的个数function3(char st,int n) int i,sum=0; for(i=0;i=97&sti=122) sum+; printf(小写字母个数: %dn,sum);/(4)统计元音字母个数(小写),重复不计数function4(char st,int n) int i,j,sum=0; char temp10; for(i=0;i=0;j-) if(sti=tempj) sum-; printf(元音字母个数: %dn,sum);/(5)找出字符串中的最大值function5(char st,int n) int i; char temp; temp=st1; for(i=0;itemp) temp=sti; printf(字符串中的最大值: %cn,temp);/(6)找出字符串中的最小值function6(char st,int n) int i; char temp; temp=st1; for(i=0;in;i+) if(stitemp) temp=sti; printf(字符串中的最小值: %cn,temp);#include int fun(int * a,int * b);void main()int *a,*b,p;printf(输入两个整数: );scanf(%d,&a);scanf(%d,&b);p=fun(a,b);if(p=1)printf(你输入的两个数相同!n);elseprintf(你输入的两个不数相同!n);P97_2_1int fun(int * a,int * b)if(a=b)return 1;elsereturn 0;P97_3构造一个包含n个元素的一维随机整型数组#include#include#include#define N 30int count;void init(int * Array,int n);/随机数组生成void Input(int * Array,int n);/输出函数void Function1(int * Array,int n);/(1)删除数组中指定的元素void Function2(int * Array,int n);/(2)删除数组中指定位置的元素void Function3(int * Array,int n);/(3)删除数组中相同的元素void Function4(int * Array,int n);/(4)在数组中指定的位置添加元素void Function5(int * Array,int n);/(5)对元素进行排序void Function6(int * Array,int n);/(6)向有序的数组中添加元素,并保持有序void Function7(int * Array,int n);/(7)将数组反序void main() int ArrayN;count=N;printf(数组: );init(Array,N);Input(Array,N);Function1(Array,N);printf(删除指定元素后的数组:);Input(Array,N);Function2(Array,N);printf(删除指定位置后的数组:);Input(Array,N);printf(删除相同元素后: );Function3(Array,N);Input(Array,N);/*Function4(Array,N);Input(Array,N);*/printf(从小到大排序: );Function5(Array,N);Input(Array,N);Function6(Array,N);printf(添加元素并保持有序: );Input(Array,N);Function7(Array,N);printf(数组反序: );Input(Array,N);void init(int * Array,int n) int i;srand(int)time(NULL); for(i=0;in;i+) Arrayi=rand() % 50+0; /输出函数void Input(int * Array,int n)int i;for(i=0;icount;i+)printf(%d ,Arrayi);printf(n);/(1)删除数组中指定的元素void Function1(int * Array,int n)int i,num,j;printf(选择你要删除的元素: ,n);scanf(%d,&num);for(i=0;in;i+)if(Arrayi=num)Arrayi=Arrayi+1;count-;for(j=i+1;jcount)printf(你要删除的数不在范围内!);elsecount-;for(i=num-1;icount;i+)Arrayi=Arrayi+1;/(3)删除数组中相同的元素void Function3(int * Array,int n)int i,j,temp;for(i=0;icount;i+)for(j=i+1;jcount;j+)if(Arrayi=Arrayj)count-;for(temp=i;tempcount;temp+)Arraytemp=Arraytemp+1;count-;for(temp=j-1;tempseat-1;i-)Arrayi=Arrayi-1;Arrayseat-1=num;/(5)对元素进行排序void Function5(int * Array,int n)int i,j,temp;for(i=0;icount;i+)for(j=0;jArrayj+1)temp=Arrayj;Arrayj=Arrayj+1;Arrayj+1=temp;/(6)向有序的数组中添加元素,并保持有序void Function6(int * Array,int n)int num,m;printf(输入你要添加的元素: );scanf(%d,&num);count+;m=count;Arraym=num;Function5(Array,N);/(7)将数组反序void Function7(int * Array,int n)int i,j,temp;for(i=0;icount;i+)for(j=0;jcount-i;j+)if(ArrayjArrayj+1)temp=Arrayj;Arrayj=Arrayj+1;Arrayj+1=temp;P97_3_2#include#include#define N 100int count;void Output(char *Array);/输出函数void Function1(char * Array);/(1)删除字符串中指定的元素void Function2(char * Array);/(2)删除数组中指定位置的元素void Function3(char * Array);/(3)删除字符中所有的元音字母void Function4(char * Array);/(4)在数组中指定的位置添加元素void main()char Array100=abcdefghijklSABCmnabcdefghikjnm;count=N;Output(Array);Function1(Array);printf(删除指定字符后: );Output(Array);Function2(Array);printf(删除后: );Output(Array);Function3(Array);printf(删除元音字母后: );Output(Array);Function4(Array);printf(添加元素后: );Output(Array);/输出函数void Output(char *Array)int i;for(i=0;iN;i+)printf(%c,Arrayi);printf(n);/(1)删除字符串中指定的元素void Function1(char * Array)int i,j;char num;printf(选择你要删除的元素: );scanf(%c,&num);getchar();for(i=0;iN;i+)if(Arrayi=num)Arrayi=Arrayi+1;count-;for(j=i+1;jcount)printf(你要删除的数不在范围内!);elsecount-;for(i=num-1;icount;i+)Arrayi=Arrayi+1;/(3)删除字符中所有的元音字母void Function3(char * Array)int i;for(i=0;iseat-1;i-)Arrayi=Arrayi-1;Arrayseat-1=num;P97_3_3/构造两个nxn的矩阵A和B,用于存储整型数据#include#include#include#define N 3#define M (N*(N+1)/2)void init(int ArrayNN,int n);/矩阵生成void Output(int ArrayNN,int n);/nxn输出函数void Output1(int ArrayM,int n);/一维数组输出函数int Function1(int ArrayNN,int n);/判断矩阵A是否是对称矩阵int Function2(int ArrayNN,int n);/判断矩阵B是否是对称矩阵void Function3(int ArrayNN,int n,int Array1M);/(3)将矩阵A的上三角元素存储到一个一维数组中void Function4(int ArrayNN,int n,int Array1M);/(4)将矩阵A的下三角元素存储到一个一维数组中void Function5(int Array1NN,int Array2NN,int Array3NN,int n);/(5)A+Bvoid main()int ArrayANN,ArrayBNN,ArrayCNN,num;int Array1M,Array2M;srand(int)time(NULL);init(ArrayA,N);printf(矩阵A:n);Output(ArrayA,N);init(ArrayB,N);printf(矩阵B:n);Output(ArrayB,N);num=Function1(ArrayA,N);if(num!=0)printf(矩阵A不是对称矩阵n);elseprintf(矩阵A是对称矩阵n);num=Function1(ArrayB,N);if(num!=0)printf(矩阵B不是上三角矩阵n);elseprintf(矩阵A是上三角矩阵n);Function3( ArrayA, N, Array1);printf(将矩阵A的上三角元素存储到一个一维数组中n);Output1( Array1,M);Function4( ArrayA, N, Array2);printf(将矩阵A下三角元素存储到一个一维数组中n);Output1( Array2,M);printf(A+Bn);Function5( ArrayA, ArrayB, ArrayC,N);Output(ArrayC,N);/矩阵生成void init(int ArrayNN,int n)int i,j;/srand(int)time(NULL);for(i=0;in;i+)for(j=0;jn;j+)Arrayij=rand()%100+0;/nxn输出函数void Output(int ArrayNN,int n)int i,j;for(i=0;in;i+)for(j=0;jn;j+)printf(%dt,Arrayij);printf(n);printf(n);/一维数组输出函数void Output1(int ArrayM,int n)int i;for(i=0;in;i+)printf(%d ,Arrayi);printf(n);/(1)判断矩阵A是否是对称矩阵int Function1(int ArrayNN,int n)int i,j,num;num=0;for(i=0;in;i+)for(j=0;jn;j+)if(Arrayij!=Arrayji)num+;return num;/(2)判断矩阵B是否是上三角矩阵int Function2(int ArrayNN,int n)int i,j,num=0;for(i=0;in;i+)for(j=i;jn;j+)if(Arrayij!=0);num+;return num;/(3)将矩阵A的上三角元素存储到一个一维数组中void Function3(int ArrayNN,int n,int Array1M)int i,k,j;k=0;for(i=0;in;i+)for(j=i;jn;j+)Array1k=Arrayij;k+;/(4)将矩阵A的下三角元素存储到一个一维数组中void Function4(int ArrayNN,int n,int Array1M)int i,k,j;k=0;for(i=0;i=0;j-)Array1k=Arrayij;k+;/(5)A+Bvoid Function5(int Array1NN,int Array2NN,int Array3NN,int n)int i,j;for(i=0;in;i+)for(j=0;jn;j+) Array3ij=Array1ij+Array2ij;P98_4_1/稀疏矩阵只有1/3左右的元素非0,而其余元素都是0/编写程序判断任意矩阵是否为稀疏矩阵#include#include#include#define N 5void init(int ArrayNN);void Judge(int ArrayNN);void main()int ArrayNN;init(Array);Judge(Array);/矩阵生成void init(int ArrayNN)int i,j;srand(int)time(NULL);for(i=0;iN;i+)for(j=0;jN;j+)Arrayij=rand()%100+0;printf(%dt,Arrayij);printf(n);/判断稀疏矩阵void Judge(int ArrayNN)int i,j,count=0;for(i=0;iN;i+)for(j=0;jN;j+)if(Arrayij!=0)count+;if(count=N*N/3)printf(该矩阵是稀疏矩阵!n);elseprintf(该矩阵不是稀疏矩阵!n);P99_2_1/编写函数fun,判断两个指针a和b所存单元的值的符号是否相同,若相同则函数返回1,否则返回0,这两个存储单元中的值都不为0/在主函数中输入两个整数,调用函数fun输出结果#includeint fun(int *num1,int *num2);void main()int count,num1,num2;printf(输入两个整数:);scanf(%d,&num1);scanf(%d,&num2);count=fun(&num1,&num2);if(count=1)printf(两数同号!n);elseprintf(两数异号!n);int fun(int *num1,int *num2)if(*num10&*num20)|(*num10&*num20)return 1;elsereturn 0;P99_2_2/*编写函数sum,求数组a中所有奇数之和和所有偶数之和,形参n给出数组中的个数,利用指针odd和even分别返回奇数之和和偶数之和,在主函数中输入n个整数,调用sum进行求和,输出计算结果*/#includevoid sum(int *a,int n,int *odd,int *even);void main()int i,n,a100,odd,even;printf(输入要定义的数组数据个数:);scanf(%d,&n);for(i=0;in;i+)scanf(%d,&ai);printf(你输入的数组为:);for(i=0;in;i+)printf(%dt,ai);sum(a,n,&odd,&even);printf(奇数之和: %dn,odd);printf(奇数之和: %dn,even);void sum(int *a,int n,int *odd,int *even)int i;*odd=0;*even=0;for(i=0;in;i+)if(ai%2!=0)*odd=*odd+ai;else*even=*even+ai;P99_2_3/*编写函数dcopy 将数组中的偶数复制到数组b中,在主函数中输入n个整数中,调用函数dcopy进行复制,输出复制后的b*/#includeint dcopy(int *a,int *b,int n);void main()int n,i,a100,b100;printf(输入要定义的数组个数:);scanf(%d,&n);printf(输入整数:);for(i=0;in;i+)scanf(%d,&ai);dcopy(a,b,n);printf(复制后数组b: );for(i=0;in;i+)printf(%d ,bi);printf(n);int dcopy(int *a,int *b,int n)int i;for(i=0;in;i+)bi=ai;return 0;P99_2_4/*编写函数exchange,把数组a中的最大数和最小数交换(设a中无重复元素),在主函数输入n个整数,调用exchange进行交换,输出运行结果*/#includevoid exchange(int *a,int n);void main()int i,n,a100;printf(输入要定义的数组数据个数:);scanf(%d,&n);for(i=0;in;i+)scanf(%d,&ai);printf(你输入的数组为:);for(i=0;in;i+)printf(%dt,ai);printf(n);exchange(a,n);printf(最大值和最小值交换位置后 );for(i=0;in;i+)printf(%dt,ai);printf(n);void exchange(int *a,int n)int i,temp1,temp2,temp,num1=0,num2=0;temp1=a0;temp2=a0;for(i=0;itemp1)temp1=ai;/找出最大num1=i;if(aitemp2)temp2=ai;/找出最小num2=i;temp=anum1;anum1=anum2;anum2=temp;P99_2_5/*有n(你=40)个学生,每个学生的数据包括学号、姓名、3门课程的成绩。编写函数(1)输出n个学生的所有信息(2)输出没门课程的平均成绩(3)输出最高分的学生信息*/#include#define N 40typedef struct Informatio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论