Data_Structure/作業/unit2/NODUMMY.c
2025-01-20 21:30:53 +08:00

91 lines
1.8 KiB
C

#include <stdio.h>
#include <stdlib.h>
void output_P(int P[]);
void Padd(int A[], int B[], int C[],int lenA,int lenB);
void output_P(int P[]) {
int i;
for(i=1;i<P[0]*2;i++){
printf("%d^%d ",P[i+1],P[i]);
i++;
}
}
void Padd(int A[], int B[], int C[],int lenA,int lenB) {
int i = 1 , j=1 , k=1 ,count=0;
while(i<lenA && j<lenB){//分別比較A和B的長度
if(A[i]>B[j]){
C[k++] = A[i++];
C[k++] = A[i++];
count++;
}
if(A[i]<B[j]){
C[k++] = B[j++];
C[k++] = B[j++];
count++;
}
if(A[i]==B[j]){
C[k++] = B[j++];
i++;
C[k++] = B[j++] + A[i++];
count++;
}C[0]=count;
}
// 測試
// printf("\nA = (");
// for(i=0;i<lenA;i++){
//// printf("A[%d]=%d ,",i,A[i]);
// printf("%d ",A[i]);
// }
// printf(")\nB = (");
// for(i=0;i<lenB;i++){
//// printf("B[%d]=%d ,",i,B[i]);
// printf("%d ",B[i]);
// }
// printf(")\nC = (");
// for(i=0;i<count*2+1;i++){
//// printf("C[%d]=%d ,",i,C[i]);
// printf("%d ",C[i]);
// }printf(")");
// 比較好看
// printf("\nA多項式有%d個元素\n",A[0]);
// for(i=1;i<A[0]*2;i++){
// printf("%d^%d ",A[i+1],A[i]);
// i++;
// }
// printf("\nB多項式有%d個元素\n",B[0]);
// for(i=1;i<B[0]*2;i++){
// printf("%d^%d ",B[i+1],B[i]);
// i++;
// }
// printf("\nC多項式有%d個元素\n",C[0]);
// for(i=1;i<C[0]*2;i++){
// printf("%d^%d ",C[i+1],C[i]);
// i++;
// }
}
int main() {
int A[] = { 5, 6, 6, 4, 5, 2, 3, 1, 3, 0, 2 };
int B[] = { 4, 4, 8, 3, 6, 2, 2, 0, 1 };
int C[13] = { 0 };
int lenA = sizeof A / sizeof A[0];
int lenB = sizeof B / sizeof B[0];
Padd(A, B, C, lenA, lenB);
printf("\nA多項式有%d個元素\nA = ( ",A[0]);
output_P(A);
printf(")\nB多項式有%d個元素\nB = ( ",B[0]);
output_P(B);
printf(")\nC多項式有%d個元素\nC = ( ",C[0]);
output_P(C);
printf(")");
return 0;
}