从结构体数组中查找指定信息的元素 分数 10 作者 王才善 单位 兰州交通大学 本题要求实现一个函数,可从一个结构体数组data域中查找一个给定的数据元素x,查找成功,返回该元素所在位置的指针;否则,返回NULL。 函数接口定义: INFO *SearchIn ( INFO *p, int n, int x ); 其中 p 、n和 x 都是用户传入的参数。 p 是一个INFO类型的指针;n是数组元素个数, x 是要查找的数据元素。函数返回 x 在 p所指的数组中具体位置。
时间: 2024-02-28 08:56:12 浏览: 243
函数接口定义如下:
```C
INFO *SearchIn(INFO *p, int n, int x);
```
函数说明:
该函数的作用是从一个结构体数组data域中查找一个给定的数据元素x,查找成功,返回该元素所在位置的指针;否则,返回NULL。
参数说明:
- p:INFO类型的指针,表示结构体数组data的首地址。
- n:整型,表示结构体数组data元素的个数。
- x:整型,表示要查找的数据元素。
返回值说明:
- 返回INFO类型的指针,指向数组中x所在位置的指针,如果没有找到,返回NULL。
函数实现:
```C
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct{
int key;
/* 其他数据域 */
}INFO;
INFO *SearchIn(INFO *p, int n, int x){
int i;
for(i=0; i<n; i++){
if(p[i].key == x){
return &p[i];
}
}
return NULL;
}
int main(){
INFO data[MAXSIZE];
int n, i, x;
INFO *p;
printf("请输入结构体数组data元素的个数:");
scanf("%d", &n);
printf("请输入%d个元素的key值:", n);
for(i=0; i<n; i++){
scanf("%d", &data[i].key);
}
printf("请输入要查找的数据元素:");
scanf("%d", &x);
p = SearchIn(data, n, x);
if(p != NULL){
printf("要查找的数据元素%d在数组中的位置为%d\n", x, p-data+1);
}
else{
printf("要查找的数据元素%d在数组中不存在\n", x);
}
return 0;
}
```
上述代码首先定义了一个结构体类型`INFO`,包含一个整型成员变量key。然后定义了一个函数`SearchIn`,该函数的作用是从一个结构体数组data域中查找一个给定的数据元素x,查找成功,返回该元素所在位置的指针;否则,返回NULL。在函数中,利用for循环依次遍历结构体数组data,如果找到了key值等于x的元素,则返回该元素的地址。最后在主函数中,从键盘中输入结构体数组data元素的个数n和n个元素的key值,然后从键盘中输入要查找的数据元素x,调用SearchIn函数查找该元素在数组中的位置,输出结果。
阅读全文