妙趣横生算法 3:寻找相同元素的指针
生活随笔
收集整理的這篇文章主要介紹了
妙趣横生算法 3:寻找相同元素的指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
實例說明
在已知兩個從小到大的有序的數表中尋找出現的相同元素在第一個數表中的指針。
運行結果
?
實例解析
???
????? ? 設兩個數表的首元素指針分別為pa和pb,兩個數表分別有元素an和bn個。另外,引入兩個指針變量ca和cb,分別指向兩個數表的當前訪問元素。由于兩個數表從小到大有序,可讓ca和cb同時順序訪問兩數表實現尋找,不必對一個數表的每個元素與另一數表的所有元素都要比較。當一個數表的當前元素小于另一個數表的當前元素時,就調整那個當前元素值小的元素的指針,使它指向下一個元素(如果下一個元素存在)如此比較直至當兩個數表的當前元素相等,該元素就是在兩個數表中都出現的第一個元素,或者其中某個數表已查找完,則判斷在兩數表中不存在值相等的元素。
?
程序代碼
?
#include <stdio.h> /*在已知兩個從小到大有序的數表中尋找都出現的第一個元素的指針*/int *search(int *pa,int *pb,int an ,int bn) {int *ca,*cb;ca=pa;cb=pb;/*為ca,cb設定初值*/while(ca<pa+an&&cb<pa+bn){/*在兩個數表中找下一個相等的元素*/if(*ca<*cb)/*數表1的當前元素<數表2的當前元素*/{ca++;}else if(*ca>*cb)/*數表1的當前元素>數表2的當前元素*/{cb++;}else{return ca;}}return NULL; } main()/*只是為了引用函數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();}轉載于:https://www.cnblogs.com/huangye123_hi/archive/2012/01/22/2328746.html
總結
以上是生活随笔為你收集整理的妙趣横生算法 3:寻找相同元素的指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 物理外挂4G秒变5G!华为Mate 50
- 下一篇: 《仙剑奇侠传七》PS4/PS5版本今日正