原题:给定两个降序链表,找出其公共元素
样例输入:
6,5,4,3,2,1
6,5,3,2,1
样例输出:
6,5,3,2,1
思路:分别定义两个指针i,j 指向两个表头,逐一比较,留下相同的元素
#include<stdio.h>
#include <string.h>
#define N 100
int *find_common_sequence(int a[],int b[],int m,int n){
int p=0,q=0,cnt=0;
if(m==0 || n==0){
return NULL;
}
int r = m>n?m:n;
int res[r];
memset(res,0,sizeof(int)*r);
while(p<m && q<n){
if(a[p] == b[q]){
res[cnt] = a[p];
cnt++;
p++;
q++;
}
else if(a[p]>b[q]){
p++;
}
else{
q++;
}
}
printf("%d\n",cnt);
for(int i=0;i<cnt;i++)
printf("%d ",*(res+i));
return res;
}
int main()
{
int list_a [N] = {6,5,4,3,2,1};
int list_b[N] = {6,5,3,2,1};
// memset(list_a,0,sizeof(int)*N);
// memset(list_b,0,sizeof(int)*N);
// int a=0,count=0;
// while(scanf("%d",&a)!=EOF)
// list_a[count] = a;
// count++;
// count = 0;
// while(scanf("%d",&a)!=EOF)
// list_b[count] = a;
// count++;
//
int *res = find_common_sequence(list_a,list_b,6,5);
// for(int i=0;i<5;i++)
// printf("%d ",*(res+i));
return 0;
}