妙趣横生算法 3:寻找相同元素的指针
生活随笔
收集整理的這篇文章主要介紹了
妙趣横生算法 3:寻找相同元素的指针
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
實例說明
在已知兩個從小到大的有序的數(shù)表中尋找出現(xiàn)的相同元素在第一個數(shù)表中的指針。
運行結(jié)果
?
實例解析
???
????? ? 設(shè)兩個數(shù)表的首元素指針分別為pa和pb,兩個數(shù)表分別有元素an和bn個。另外,引入兩個指針變量ca和cb,分別指向兩個數(shù)表的當(dāng)前訪問元素。由于兩個數(shù)表從小到大有序,可讓ca和cb同時順序訪問兩數(shù)表實現(xiàn)尋找,不必對一個數(shù)表的每個元素與另一數(shù)表的所有元素都要比較。當(dāng)一個數(shù)表的當(dāng)前元素小于另一個數(shù)表的當(dāng)前元素時,就調(diào)整那個當(dāng)前元素值小的元素的指針,使它指向下一個元素(如果下一個元素存在)如此比較直至當(dāng)兩個數(shù)表的當(dāng)前元素相等,該元素就是在兩個數(shù)表中都出現(xiàn)的第一個元素,或者其中某個數(shù)表已查找完,則判斷在兩數(shù)表中不存在值相等的元素。
?
程序代碼
?
#include <stdio.h> /*在已知兩個從小到大有序的數(shù)表中尋找都出現(xiàn)的第一個元素的指針*/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){/*在兩個數(shù)表中找下一個相等的元素*/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输入框控