妙趣横生算法 3:寻找相同元素的指针
實(shí)例說明
在已知兩個(gè)從小到大的有序的數(shù)表中尋找出現(xiàn)的相同元素在第一個(gè)數(shù)表中的指針。
運(yùn)行結(jié)果
?
實(shí)例解析
???
????? ? 設(shè)兩個(gè)數(shù)表的首元素指針分別為pa和pb,兩個(gè)數(shù)表分別有元素an和bn個(gè)。另外,引入兩個(gè)指針變量ca和cb,分別指向兩個(gè)數(shù)表的當(dāng)前訪問元素。由于兩個(gè)數(shù)表從小到大有序,可讓ca和cb同時(shí)順序訪問兩數(shù)表實(shí)現(xiàn)尋找,不必對(duì)一個(gè)數(shù)表的每個(gè)元素與另一數(shù)表的所有元素都要比較。當(dāng)一個(gè)數(shù)表的當(dāng)前元素小于另一個(gè)數(shù)表的當(dāng)前元素時(shí),就調(diào)整那個(gè)當(dāng)前元素值小的元素的指針,使它指向下一個(gè)元素(如果下一個(gè)元素存在)如此比較直至當(dāng)兩個(gè)數(shù)表的當(dāng)前元素相等,該元素就是在兩個(gè)數(shù)表中都出現(xiàn)的第一個(gè)元素,或者其中某個(gè)數(shù)表已查找完,則判斷在兩數(shù)表中不存在值相等的元素。
?
程序代碼
?
#include <stdio.h> /*在已知兩個(gè)從小到大有序的數(shù)表中尋找都出現(xiàn)的第一個(gè)元素的指針*/int *search(int *pa,int *pb,int an ,int bn) {int *ca,*cb;ca=pa;cb=pb;/*為ca,cb設(shè)定初值*/while(ca<pa+an&&cb<pa+bn){/*在兩個(gè)數(shù)表中找下一個(gè)相等的元素*/if(*ca<*cb)/*數(shù)表1的當(dāng)前元素<數(shù)表2的當(dāng)前元素*/{ca++;}else if(*ca>*cb)/*數(shù)表1的當(dāng)前元素>數(shù)表2的當(dāng)前元素*/{cb++;}else{return ca;}}return NULL; } main()/*只是為了引用函數(shù)search*/ {int *vp,i;int a[]={1,3,5,7,9,12,17,19,23,35,46};int b[]={2,4,6,7,10,23,24,25,33,45,56};printf("The elements of array a is :");for(i=0;i<sizeof(a)/sizeof(a[0]);i++){printf(" %d ",a[i]);}printf("\nThe elements of array b is :");for(i=0;i<sizeof(b)/sizeof(b[0]);i++){printf(" %d ",b[i]);}vp=search(a,b,sizeof(a)/sizeof(a[0]),sizeof(b)/sizeof(b[0]));if(vp){printf("\n The first same number in both arrays is %d\n",*vp);}else{printf("Not found!\n");}printf("\n Press any key to quit....\n");getchar();}轉(zhuǎn)載于:https://www.cnblogs.com/huangye123_hi/archive/2012/01/22/2328746.html
總結(jié)
以上是生活随笔為你收集整理的妙趣横生算法 3:寻找相同元素的指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 物理外挂4G秒变5G!华为Mate 50
- 下一篇: WP7应用开发笔记(8) IP输入框控