Fork me on GitHub

使用指针寻找元素

寻找相同元素的指针,寻找两个数组中第一次出现相同的数

 1 //寻找相同元素的指针,寻找两个数组中第一次出现相同的数    
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 int *search(int *a,int *b,int pa,int pb)
 7 {
 8     int *ca,*cb;
 9     ca=a,cb=b;
10     while(ca<pa+a && cb<pb+b) /*两个数表都未考察完*/
11     {
12         if(*ca<*cb)
13         {
14             ca++;
15         }
16         else if(*ca>*cb)
17         {
18             cb++;
19         }
20         else
21         {
22             return ca;/*返回在这两个数表中找到相等元素*/
23         }
24     }
25     return NULL;
26  } 
27  
28  int main()
29  {
30      int *vp,i;
31     int a[ ]={1,3,5,7,9,18,15,27,29,37};
32     int b[ ]={2,4,6,8,10,13,14,27,29,37};
33     cout<<"The elements of array a is:";
34     for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
35     {
36         cout<<a[i]<<" ";
37     }
38     cout<<endl;
39     cout<<"The elements of array b is:";
40     for(i=0;i<sizeof(b)/sizeof(b[0]);i++)
41     {
42         cout<<b[i]<<" ";
43     }
44     cout<<endl;
45     vp=search(a,b,sizeof(a)/sizeof(a[0]),sizeof(b)/sizeof(b[0]));
46     
47     cout<<"The first same number is:"<<*vp<<endl;
48     return 0;
49     
50  }

寻找指定元素的位置

 1 // 寻找指定元素的位置    
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 int search(int *apt,int n,int key)//apt首指针 
 7 {
 8     int *p;
 9     for(p=apt;p<apt+n;p++)
10     {
11         if(*p==key)
12         {
13             return p-apt;
14         }
15      } 
16      return -1;
17 }
18 int main()
19 {
20     int a[] ={90,80,70,60,50,40,30,20,10,9,8,7,6,5,42,40,50,1,2,3};
21     int i,key;
22     cout<<"输入key:";
23     cin>>key;
24     i=search(a,sizeof(a)/sizeof(a[0]),key);
25     cout<<"key位置:"<<i<<endl;
26     return 0; 
27 }
View Code

 

posted @ 2018-04-17 16:57  风中等待  阅读(409)  评论(0编辑  收藏  举报