两个升序列的同样元素 代码(C)
本文地址: http://blog.csdn.net/caroline_wendy
两个升序列的同样元素, 须要使用两个指针, 依次遍历, 假设相等输出, 假设小于或大于, 则添加一个指针.
直到输出全部的值.
代码:
/* * main.cpp * * Created on: 2014.9.19 * Author: spike */ #include <stdio.h> int Common(int data1[], int length1, int data2[], int length2, int res[]) { if (data1 == NULL || length1 <= 0 || data2 == NULL || length2 <= 0) return -1; int i=0, j=0, k=0; while (i < length1 && j < length2) { if (data1[i] == data2[j]) { res[k++] = data1[i]; i++; j++; } else if (data1[i] < data2[j]) i++; else j++; } return k; } int main(void) { int data1[] = {1, 2, 4, 5, 6, 9, 11}; int data2[] = {2, 5, 6, 8, 12}; int length1 = sizeof(data1)/sizeof(data1[0]); int length2 = sizeof(data2)/sizeof(data2[0]); int max = length1 > length2 ? length1 : length2; int* res = new int[max]; int num = Common(data1, length1, data2, length2, res); for (int i=0; i<num; ++i) { printf("%d ", res[i]); } printf(" "); return 0; }
输出:
2 5 6