大连东软数据结构编程题(谷风软件)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构编程题

1)题1

完成函数f的实现,参数a为int数组首地址,len为数组长度,要求函数f能够将数组元素重新排列奇数在前,偶数在后。

答案:

void f(int *a, int len) {

int i, j;

for(i=0; i

int flg=1;

for(j=0; j

if(a[j]%2==0 && a[j+1]%2) {

int tmp=a[j];

a[j]=a[j+1];

a[j+1]=tmp;

flg=0;

}

}

if(flg) break;

}

}

2)题2

完成函数f的实现,参数a为int数组的首地址,len为数组长度,要求函数f能够返回数组最大元素的个数。

答案:

int f(const int *a, int len) {

int i, max=0, cnt=1;//max用于保存最大元素的序号,cnt用于记录个数

for(i=1; i

if(a[max]

max=i;

cnt=1;

} else if(a[max]==a[i]) {

++cnt;

}

return cnt;

}

3)题3

完成函数f的实现,参数a为int数组的首地址,len为数组长度,要求函数f能够将数组元素按照个位排降序,同时要求使用的算法要保证排序稳定性。

答案:

解法一:(插入排序)

void f(int *a, int len) {

int i, j, tmp;

for(i=1; i

tmp=a[i];

if(!(a[i]%10>a[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;

}

}

}

解法二:(冒泡排序)

void f(int *a, int len) {

int i, j, flg, tmp;

for(i=0; i

flg=0;

for(j=0; j

if(a[j+1]%10>a[j]%10) {

tmp=a[j+1];

a[j+1]=a[j];

a[j]=tmp;

}

if(flg=0)

break;

}

}

相关文档
最新文档