欢迎来到天天文库
浏览记录
ID:38830712
大小:73.73 KB
页数:11页
时间:2019-06-20
《大连东软数据结构编程题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数据结构编程题1)题1完成函数f的实现,参数a为int数组首地址,len为数组长度,要求函数f能够将数组元素重新排列奇数在前,偶数在后。答案:voidf(int*a,intlen){inti,j;for(i=0;i2、长度,要求函数f能够返回数组最大元素的个数。答案:intf(constint*a,intlen){inti,max=0,cnt=1;//max用于保存最大元素的序号,cnt用于记录个数for(i=1;i3、oidf(int*a,intlen){inti,j,tmp;for(i=1;ia[0]%10)){//对某数进行%10运算,即可获取其个位上的值for(j=i-1;tmp%10>a[j]%10;--j)a[j+1]=a[j];a[j+1]=tmp;}else{for(j=i;j>0;--j)a[j]=a[j-1];a[0]=tmp;}}}解法二:(冒泡排序)voidf(int*a,intlen){inti,j,flg,tmp;for(i=0;i4、){flg=0;for(j=0;ja[j]%10){tmp=a[j+1];a[j+1]=a[j];a[j]=tmp;}if(flg=0)break;}}4)题4完成函数f的实现,参数a为int数组首地址,len数组长度,要求函数f返回数组中元素是否构成大根堆,是返回1,否返回0.答案:_Boolf(constint*a,intlen){inti;for(i=(len-1)/2;i>=0;--i){if(a[i]5、6、a[i]7、eturnfalse;}}returntrue;}5)题5完成函数f的实现,参数a为int数组首地址,len为数组长度,x为一个整数,假设数组元素已排好降序,要求函数f运用折半查找算法,查找数组中是否存在x,存在返回1,不存在返回0。答案:_Boolf(constint*a,intlen,intx){intlow=0,high=len-1,mid=(low+high)/2;while(low8、mid]>x){low=mid+1;}mid=(low+high)/2;}returnfalse;}6)题6完成函数f的实现,参数s和t分别表示两个字符串首地址,要求函数f返回字符串t在字符串s中出现的次数,例如:f(“aaa”,“返回aa”)2。答案:intf(constchar*s,constchar*t){intlen1=strlen(s),len2=strlen(t),i,num=0;for(i=0;i9、}7)题7代码中,结构体Node表示双链表节点,其中p指向前驱,n指向后继;结构体List表示链表,指针head指向链表头节点,tail指向链表尾节点,当链表为空时,head和tail为0(NULL)。完成函数f的实现,参数lp表示链表结构的指针,要求函数f能够删除lp指向链表的尾节点,并释放内存(假设链表节点内存来自堆区),函数f的返回值表示删除操作是否成功,成功返回1,否则返回0。答案:_Boolf(List*lp){if(lp->tail==NULL)returnfalse;Node*cur=lp->tail;lp->t10、ail=cur->p;if(lp->tail==NULL)lp->head=NULL;elselp->tail->n=NULL;free(cur);returntrue;}8)题8代码中,结构体Node表示二叉树节点,其中left指向左孩子,right指向右孩子;完成函数f的
2、长度,要求函数f能够返回数组最大元素的个数。答案:intf(constint*a,intlen){inti,max=0,cnt=1;//max用于保存最大元素的序号,cnt用于记录个数for(i=1;i3、oidf(int*a,intlen){inti,j,tmp;for(i=1;ia[0]%10)){//对某数进行%10运算,即可获取其个位上的值for(j=i-1;tmp%10>a[j]%10;--j)a[j+1]=a[j];a[j+1]=tmp;}else{for(j=i;j>0;--j)a[j]=a[j-1];a[0]=tmp;}}}解法二:(冒泡排序)voidf(int*a,intlen){inti,j,flg,tmp;for(i=0;i4、){flg=0;for(j=0;ja[j]%10){tmp=a[j+1];a[j+1]=a[j];a[j]=tmp;}if(flg=0)break;}}4)题4完成函数f的实现,参数a为int数组首地址,len数组长度,要求函数f返回数组中元素是否构成大根堆,是返回1,否返回0.答案:_Boolf(constint*a,intlen){inti;for(i=(len-1)/2;i>=0;--i){if(a[i]5、6、a[i]7、eturnfalse;}}returntrue;}5)题5完成函数f的实现,参数a为int数组首地址,len为数组长度,x为一个整数,假设数组元素已排好降序,要求函数f运用折半查找算法,查找数组中是否存在x,存在返回1,不存在返回0。答案:_Boolf(constint*a,intlen,intx){intlow=0,high=len-1,mid=(low+high)/2;while(low8、mid]>x){low=mid+1;}mid=(low+high)/2;}returnfalse;}6)题6完成函数f的实现,参数s和t分别表示两个字符串首地址,要求函数f返回字符串t在字符串s中出现的次数,例如:f(“aaa”,“返回aa”)2。答案:intf(constchar*s,constchar*t){intlen1=strlen(s),len2=strlen(t),i,num=0;for(i=0;i9、}7)题7代码中,结构体Node表示双链表节点,其中p指向前驱,n指向后继;结构体List表示链表,指针head指向链表头节点,tail指向链表尾节点,当链表为空时,head和tail为0(NULL)。完成函数f的实现,参数lp表示链表结构的指针,要求函数f能够删除lp指向链表的尾节点,并释放内存(假设链表节点内存来自堆区),函数f的返回值表示删除操作是否成功,成功返回1,否则返回0。答案:_Boolf(List*lp){if(lp->tail==NULL)returnfalse;Node*cur=lp->tail;lp->t10、ail=cur->p;if(lp->tail==NULL)lp->head=NULL;elselp->tail->n=NULL;free(cur);returntrue;}8)题8代码中,结构体Node表示二叉树节点,其中left指向左孩子,right指向右孩子;完成函数f的
3、oidf(int*a,intlen){inti,j,tmp;for(i=1;ia[0]%10)){//对某数进行%10运算,即可获取其个位上的值for(j=i-1;tmp%10>a[j]%10;--j)a[j+1]=a[j];a[j+1]=tmp;}else{for(j=i;j>0;--j)a[j]=a[j-1];a[0]=tmp;}}}解法二:(冒泡排序)voidf(int*a,intlen){inti,j,flg,tmp;for(i=0;i4、){flg=0;for(j=0;ja[j]%10){tmp=a[j+1];a[j+1]=a[j];a[j]=tmp;}if(flg=0)break;}}4)题4完成函数f的实现,参数a为int数组首地址,len数组长度,要求函数f返回数组中元素是否构成大根堆,是返回1,否返回0.答案:_Boolf(constint*a,intlen){inti;for(i=(len-1)/2;i>=0;--i){if(a[i]5、6、a[i]7、eturnfalse;}}returntrue;}5)题5完成函数f的实现,参数a为int数组首地址,len为数组长度,x为一个整数,假设数组元素已排好降序,要求函数f运用折半查找算法,查找数组中是否存在x,存在返回1,不存在返回0。答案:_Boolf(constint*a,intlen,intx){intlow=0,high=len-1,mid=(low+high)/2;while(low8、mid]>x){low=mid+1;}mid=(low+high)/2;}returnfalse;}6)题6完成函数f的实现,参数s和t分别表示两个字符串首地址,要求函数f返回字符串t在字符串s中出现的次数,例如:f(“aaa”,“返回aa”)2。答案:intf(constchar*s,constchar*t){intlen1=strlen(s),len2=strlen(t),i,num=0;for(i=0;i9、}7)题7代码中,结构体Node表示双链表节点,其中p指向前驱,n指向后继;结构体List表示链表,指针head指向链表头节点,tail指向链表尾节点,当链表为空时,head和tail为0(NULL)。完成函数f的实现,参数lp表示链表结构的指针,要求函数f能够删除lp指向链表的尾节点,并释放内存(假设链表节点内存来自堆区),函数f的返回值表示删除操作是否成功,成功返回1,否则返回0。答案:_Boolf(List*lp){if(lp->tail==NULL)returnfalse;Node*cur=lp->tail;lp->t10、ail=cur->p;if(lp->tail==NULL)lp->head=NULL;elselp->tail->n=NULL;free(cur);returntrue;}8)题8代码中,结构体Node表示二叉树节点,其中left指向左孩子,right指向右孩子;完成函数f的
4、){flg=0;for(j=0;ja[j]%10){tmp=a[j+1];a[j+1]=a[j];a[j]=tmp;}if(flg=0)break;}}4)题4完成函数f的实现,参数a为int数组首地址,len数组长度,要求函数f返回数组中元素是否构成大根堆,是返回1,否返回0.答案:_Boolf(constint*a,intlen){inti;for(i=(len-1)/2;i>=0;--i){if(a[i]5、6、a[i]7、eturnfalse;}}returntrue;}5)题5完成函数f的实现,参数a为int数组首地址,len为数组长度,x为一个整数,假设数组元素已排好降序,要求函数f运用折半查找算法,查找数组中是否存在x,存在返回1,不存在返回0。答案:_Boolf(constint*a,intlen,intx){intlow=0,high=len-1,mid=(low+high)/2;while(low8、mid]>x){low=mid+1;}mid=(low+high)/2;}returnfalse;}6)题6完成函数f的实现,参数s和t分别表示两个字符串首地址,要求函数f返回字符串t在字符串s中出现的次数,例如:f(“aaa”,“返回aa”)2。答案:intf(constchar*s,constchar*t){intlen1=strlen(s),len2=strlen(t),i,num=0;for(i=0;i9、}7)题7代码中,结构体Node表示双链表节点,其中p指向前驱,n指向后继;结构体List表示链表,指针head指向链表头节点,tail指向链表尾节点,当链表为空时,head和tail为0(NULL)。完成函数f的实现,参数lp表示链表结构的指针,要求函数f能够删除lp指向链表的尾节点,并释放内存(假设链表节点内存来自堆区),函数f的返回值表示删除操作是否成功,成功返回1,否则返回0。答案:_Boolf(List*lp){if(lp->tail==NULL)returnfalse;Node*cur=lp->tail;lp->t10、ail=cur->p;if(lp->tail==NULL)lp->head=NULL;elselp->tail->n=NULL;free(cur);returntrue;}8)题8代码中,结构体Node表示二叉树节点,其中left指向左孩子,right指向右孩子;完成函数f的
5、
6、a[i]7、eturnfalse;}}returntrue;}5)题5完成函数f的实现,参数a为int数组首地址,len为数组长度,x为一个整数,假设数组元素已排好降序,要求函数f运用折半查找算法,查找数组中是否存在x,存在返回1,不存在返回0。答案:_Boolf(constint*a,intlen,intx){intlow=0,high=len-1,mid=(low+high)/2;while(low8、mid]>x){low=mid+1;}mid=(low+high)/2;}returnfalse;}6)题6完成函数f的实现,参数s和t分别表示两个字符串首地址,要求函数f返回字符串t在字符串s中出现的次数,例如:f(“aaa”,“返回aa”)2。答案:intf(constchar*s,constchar*t){intlen1=strlen(s),len2=strlen(t),i,num=0;for(i=0;i9、}7)题7代码中,结构体Node表示双链表节点,其中p指向前驱,n指向后继;结构体List表示链表,指针head指向链表头节点,tail指向链表尾节点,当链表为空时,head和tail为0(NULL)。完成函数f的实现,参数lp表示链表结构的指针,要求函数f能够删除lp指向链表的尾节点,并释放内存(假设链表节点内存来自堆区),函数f的返回值表示删除操作是否成功,成功返回1,否则返回0。答案:_Boolf(List*lp){if(lp->tail==NULL)returnfalse;Node*cur=lp->tail;lp->t10、ail=cur->p;if(lp->tail==NULL)lp->head=NULL;elselp->tail->n=NULL;free(cur);returntrue;}8)题8代码中,结构体Node表示二叉树节点,其中left指向左孩子,right指向右孩子;完成函数f的
7、eturnfalse;}}returntrue;}5)题5完成函数f的实现,参数a为int数组首地址,len为数组长度,x为一个整数,假设数组元素已排好降序,要求函数f运用折半查找算法,查找数组中是否存在x,存在返回1,不存在返回0。答案:_Boolf(constint*a,intlen,intx){intlow=0,high=len-1,mid=(low+high)/2;while(low8、mid]>x){low=mid+1;}mid=(low+high)/2;}returnfalse;}6)题6完成函数f的实现,参数s和t分别表示两个字符串首地址,要求函数f返回字符串t在字符串s中出现的次数,例如:f(“aaa”,“返回aa”)2。答案:intf(constchar*s,constchar*t){intlen1=strlen(s),len2=strlen(t),i,num=0;for(i=0;i9、}7)题7代码中,结构体Node表示双链表节点,其中p指向前驱,n指向后继;结构体List表示链表,指针head指向链表头节点,tail指向链表尾节点,当链表为空时,head和tail为0(NULL)。完成函数f的实现,参数lp表示链表结构的指针,要求函数f能够删除lp指向链表的尾节点,并释放内存(假设链表节点内存来自堆区),函数f的返回值表示删除操作是否成功,成功返回1,否则返回0。答案:_Boolf(List*lp){if(lp->tail==NULL)returnfalse;Node*cur=lp->tail;lp->t10、ail=cur->p;if(lp->tail==NULL)lp->head=NULL;elselp->tail->n=NULL;free(cur);returntrue;}8)题8代码中,结构体Node表示二叉树节点,其中left指向左孩子,right指向右孩子;完成函数f的
8、mid]>x){low=mid+1;}mid=(low+high)/2;}returnfalse;}6)题6完成函数f的实现,参数s和t分别表示两个字符串首地址,要求函数f返回字符串t在字符串s中出现的次数,例如:f(“aaa”,“返回aa”)2。答案:intf(constchar*s,constchar*t){intlen1=strlen(s),len2=strlen(t),i,num=0;for(i=0;i9、}7)题7代码中,结构体Node表示双链表节点,其中p指向前驱,n指向后继;结构体List表示链表,指针head指向链表头节点,tail指向链表尾节点,当链表为空时,head和tail为0(NULL)。完成函数f的实现,参数lp表示链表结构的指针,要求函数f能够删除lp指向链表的尾节点,并释放内存(假设链表节点内存来自堆区),函数f的返回值表示删除操作是否成功,成功返回1,否则返回0。答案:_Boolf(List*lp){if(lp->tail==NULL)returnfalse;Node*cur=lp->tail;lp->t10、ail=cur->p;if(lp->tail==NULL)lp->head=NULL;elselp->tail->n=NULL;free(cur);returntrue;}8)题8代码中,结构体Node表示二叉树节点,其中left指向左孩子,right指向右孩子;完成函数f的
9、}7)题7代码中,结构体Node表示双链表节点,其中p指向前驱,n指向后继;结构体List表示链表,指针head指向链表头节点,tail指向链表尾节点,当链表为空时,head和tail为0(NULL)。完成函数f的实现,参数lp表示链表结构的指针,要求函数f能够删除lp指向链表的尾节点,并释放内存(假设链表节点内存来自堆区),函数f的返回值表示删除操作是否成功,成功返回1,否则返回0。答案:_Boolf(List*lp){if(lp->tail==NULL)returnfalse;Node*cur=lp->tail;lp->t
10、ail=cur->p;if(lp->tail==NULL)lp->head=NULL;elselp->tail->n=NULL;free(cur);returntrue;}8)题8代码中,结构体Node表示二叉树节点,其中left指向左孩子,right指向右孩子;完成函数f的
此文档下载收益归作者所有