將兩個有序順序表合成一個新的有序順序表,使表中所有元素的值均不同
阿新 • • 發佈:2018-12-10
typedef int type; typedef struct { int len; type data[MAX]; }sqList; bool isposorder(sqList *a)//非題 { for(int i=1;i<a->len;i++) if(a->data[i]<a->data[i-1]) return false; return true; } int combine7(sqList *a,sqList *b,sqList *c) { int i=0;int j=0;int k=0; c->len=a->len+b->len; if(!isposorder(a)||!isposorder(b)) return -1; else { while(j<a->len&&k<b->len) { if(a->data[j]<=b->data[k]) c->data[i++]=a->data[j++]; else c->data[i++]=b->data[k++]; } if(j==a->len) while(k<b->len) c->data[i++]=b->data[k++]; else while(j<a->len) c->data[i++]=a->data[j++]; return 0; } } if(a->data[i]>=a->len||a->data[i]<0) return -2; else t[a->data[i]]++; } for(int i=0;i<a->len;i++) if(t[i]>a->len/2) return i; return -1; }