對兩個有序順序表求有序的交集
阿新 • • 發佈:2018-11-05
#include <stdio.h> /* 題目:資料結構題集18頁25題 假設以2個元素依值遞增有序排列的線性表A和B分別表示2個集合(即同一表中的元素值各不相同), 現要求另闢空間構成一個線性表C,其元素為A和B中元素的交集,且表C中的元素也依值遞增有序排列。 試對順序表編寫表C的演算法。 */ #define maxlen 50 #define DATATYPE int typedef struct{ DATATYPE arr[maxlen]; int length; }Seqlist; void print_SQ(Seqlist list) { for(int i=0;i<list.length;i++){ printf("%d ",list.arr[i]); } printf("\n"); } int main(void) { Seqlist A = {{2,3,4,5,6,7},6}; Seqlist B = {{1,3,5,9},4}; print_SQ(A); print_SQ(B); //非求串的匹配問題 Seqlist C; int i=0,j=0,k=0; while(i<A.length && j<B.length){ if(A.arr[i] == B.arr[j]){ C.arr[k] = A.arr[i]; ++C.length; ++i; ++j; ++k; }else if(A.arr[i] < B.arr[j]){ ++i; }else{ ++j; } } print_SQ(C); }