《数据结构与算法分析,C语言描述》 表,栈与队列部分课后习题。

Just a test,记录。

outPut:

 
  
  1. Array No.1:2 4 5 7 10 23  
  2. Array No.2:3 4 7 13 22 30  
  3. Sum intersection:2  
  4. 4 7  
  5. Sum union section:10  
  6. 2 3 4 5 7 10 13 22 23 30 


Code:
 

 
  
  1. //Code by Pnig0s1992  
  2. //Date:2012,3,22  
  3. #include <stdio.h>  
  4. #include <Windows.h>  
  5.  
  6. #define MAX_ITEM 12  
  7.  
  8. int getInterSection(int arr1[],int arr2[],int arrRc[]);  
  9. int getUnionSection(int arr1[],int arr2[],int arrRc[]);  
  10.  
  11. int main(int argc,char ** argv)  
  12. {  
  13.     int index = 0;  
  14.     int iArray1[6] = {2,4,5,7,10,23};  
  15.     int iArray2[6] = {3,4,7,13,22,30};  
  16.     int iResult[MAX_ITEM];  
  17.     printf("\nArray No.1:");  
  18.     for(index = 0;index< 6;index++)  
  19.     {  
  20.         printf("%d ",iArray1[index]);  
  21.     }  
  22.     printf("\nArray No.2:");  
  23.     for(index = 0;index<6;index++)  
  24.     {  
  25.         printf("%d ",iArray2[index]);  
  26.     }  
  27.     int sumInter = getInterSection(iArray1,iArray2,iResult);  
  28.     printf("\nSum intersection:%d\n",sumInter);  
  29.     for(int i=0;i<sumInter;i++)  
  30.     {  
  31.         printf("%d ",iResult[i]);  
  32.     }  
  33.     int sumUnion = getUnionSection(iArray1,iArray2,iResult);  
  34.     printf("\nSum union section:%d\n",sumUnion);  
  35.     for(int j = 0;j<sumUnion;j++)  
  36.     {  
  37.         printf("%d ",iResult[j]);  
  38.     }  
  39.     system("pause");  
  40.     return 0;  
  41. }  
  42.  
  43. int getInterSection(int arr1[],int arr2[],int arrRc[])  
  44. {  
  45.     int i = 0;  
  46.     int j = 0;  
  47.     int k = 0;  
  48.     while(i<6&&j<6)  
  49.     {  
  50.         if(arr1[i] == arr2[j])  
  51.         {  
  52.             arrRc[k] = arr1[i];  
  53.             i++,j++,k++;  
  54.         }  
  55.         else if(arr1[i] < arr2[j])  
  56.             i++;  
  57.         else 
  58.             j++;  
  59.     }  
  60.     return k;  
  61. }  
  62.  
  63. int getUnionSection(int arr1[],int arr2[],int arrRc[])  
  64. {  
  65.     int i = 0,j=0,k=0;  
  66.     while(i<6 && j<6 )  
  67.     {  
  68.         if(arr1[i] < arr2[j])  
  69.         {  
  70.             arrRc[k] = arr1[i];  
  71.             i++,k++;  
  72.         }else if(arr1[i] > arr2[j])  
  73.         {  
  74.             arrRc[k] = arr2[j];  
  75.             j++;k++;  
  76.         }else 
  77.         {  
  78.             arrRc[k] = arr1[i];  
  79.             i++,j++,k++;  
  80.         }  
  81.     }  
  82.     if(i<6)  
  83.     {  
  84.         for (;i<6;i++)  
  85.         {  
  86.             arrRc[k++] = arr1[i];  
  87.         }  
  88.     }else if(j<6)  
  89.     {  
  90.         for (;j<6;j++)  
  91.         {  
  92.             arrRc[k++] = arr2[j];  
  93.         }  
  94.     }  
  95.     return k;