寻找相同元素的指针

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
posted @ 2021-11-11 16:08  技术leader  阅读(72)  评论(0)    收藏  举报