寻找相同元素的指针
1 题目
函数:find()
功能:寻找相同元素的指针
描述:比较两个有序数组的元素,输出两个数组中第一个相同的值
2 思路
利用有序数组有序的特点
建立一个指针函数,这个函数返回值为指针类型,即一个地址。定义如下:
int * find(int *a, int *b, int m, int n);
在程序中调用该函数:
int * p = find(a, b, sizeof(a)/sizeof(a[0]), sizeof(b)/sizeof(b[0]));
返回一个指向整型变量的指针
3 代码
#include <stdio.h>
#include <stdlib.h>
/**
函数:find()
功能:寻找相同元素的指针
描述:比较两个有序数组的元素,输出两个数组中第一个相同的值
**/
int * find(int *a, int *b, int m, int n) {
int *pa = a;
int *pb = b;
while(pa < a+m && pb < b+n) {
if (*pa < *pb) {
pa++;
}
else if(*pa > *pb) {
pb++;
}
else {
return pa;
}
}
}
int main(int argc, char const *argv[]) {
int *p;
int a[] = {2,5,7,9,11,34,56}; // 声明两个数组
int b[] = {3,6,8,10,12,34,59}; // 声明两个数组
printf("两个数组的内容分别是:\n");
for (int i = 0; i < sizeof(a)/sizeof(a[0]); ++i) { // 打印数组
printf("%d ", *(a+i));
}
printf("\n");
for (int j = 0; j < sizeof(b)/sizeof(b[0]); ++j) { // 打印数组
printf("%d ", *(b+j));
}
p = find(a, b, sizeof(a)/sizeof(a[0]), sizeof(b)/sizeof(b[0]));
printf("\n相同的数字是:%d\n", *p);
}
示例结果:
$ gcc ex021.c -o demo
$ ./demo
两个数组的内容分别是:
2 5 7 9 11 34 56
3 6 8 10 12 34 59
相同的数字是:34

浙公网安备 33010602011771号