熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 數據結構 >> 正文

計算機應用專業上機考試輔導---數據結構

2013-11-15 15:34:06  來源: 數據結構 

  編一C程序它能讀入集合A的一串整數(以為結束標記整數個數小於)

  和集合B的一串整數(以為結束標記整數個數小於)計算出A與B的交集

  並以由小到大的次序輸出A與B的交集中的所有整數(輸入整數時相鄰的兩個用空格隔開 為A或B輸入時同一個數可能出現多次而A與B的交集中同一個數不能出現多次) (注程序的可執行文件名必須是 eexe)

  */

  //注意調試程序時要多輸入重復數據調試;本程序是根據青龍提供的程序改編消除了重復數據的錯誤!;

  #include

  #include

  void BuCountbbleSort(int r[]int n)

  {//冒泡排序

  int ijk;

  int exchange;

  for(i=;i<=n;i++)

  {

  exchange=;

  for(j=n;j>=i;j)

  if(r[j+]

  {

  k=r[j+1];

  r[j+1]=r[j];

  r[j]=k;

  exchange=1;

  }

  if(!exchange)

  break;

  }

  }

  int BingJi(int m[],int n[],int l[],int Countaa,int Countbb)

  {//求集合的並集

  int i=0,j=0,k=0;

  while(i<=Countaa&&j<=Countbb)

  {

  if(m[i]

  {//如果 m[i]

  l[k]=m[i];

  k++;

  i++;

  }//endif

  else if(m[i]>n[j])

  {//如果 m[i]>n[j]則取小的值n[j],然後j++;

  l[k]=n[j];

  k++;

  j++;

  }//end elseif

  else

  {//如果 m[i]==n[j],可以任取一個值,然後i++;j++;

  l[k]=m[i];

  k++;

  i++;

  j++;

  }//endelse

  }//endwhile

  if(i>Countaa)

  {//如果i>Countaa,即數組m[i]中的元數個數較少,

  //則把n[j]中的剩余元素,都付給l[]。tw.WINGWiT.Com

  while(j<=Countbb)

  {

  l[k]=n[j];

  j++;

  k++;

  }//endwhile

  }//endif

  if(j>Countbb)

  {//如果j>Countbb,即數組n[i]中的元數個數較少,

  //則把m[j]中的剩余元素,都付給l[]。

  while(i<=Countaa)

  {

  l[k]=m[i];

  i++;

  k++;

  }//endwhile

  }//endif

  return k;//返回生成的數組的元數個數

  }//end BuCountbbleSort

  int JiaoJi(int m[],int n[],int l[],int Countaa,int Countbb)

  {//求集合的交集

  ///////////////////////////////////

  //消除數組m[]中的重復元素

  int w,x,y;

  for(w=0;w<=Countaa;w++)

  {

  for(x=w+1;x<=Countaa;x++)

  {

  if(m[w]==m[x])

  {

  Countaa--;

  for(y=x;y<=Countaa;y++)

  {

  m[y]=m[y+1];

  }//endfor

  x--;

  }//endif

  }//endfor

  }//endfor

  /*

  //測試消除數組中的重復元素的效果用下列循環輸出

  int z;

  for(z=0;z<=Countaa;z++)

  {

  printf("%d",m[z]);

  }

  printf("\n");

  */

  //消除結束

  ///////////////////////////////////

  ///////////////////////////////////

  //求交集

  int i=0,j=0,k=0;

  while(i<=Countaa)

  {

  for(j=0;j<=Countbb;j++)

  {//用集合的第一個元素分別和另一個集合的各元素相比較

  //然後再用第二個元素(直到最後一個元素)和另一個集合的各元素相比較

  if(m[i]==n[j])

  {//如果有相同的就保存到l[]中,這樣同時消掉了n[]中的重復元素

  l[k]=m[i];

  k++;

  break;

  }//endif

  }//endfor

  i++;

  }//endwhile

  //求交集結束

  //////////////////////////////////

  return k;

  }

  void main()

  {

  int a[1000], b[1000],c[2000];

  int exchange=0;

  int i,CountA,CountB,CountC;

  printf("input a\n");

  for(i=0;i<=1000;i++)

  {

  scanf("%d",&a[i]);

  if(a[i]==-9999)

  break;

  }//endfor

  CountA=i-1;

  BuCountbbleSort(a,CountA);//先將集合A排序

  printf("\ninput b\n");

  for(i=0;i<=1000;i++)

  {

  scanf("%d",&b[i]);

  if(b[i]==-9999)

  break;

  }//endfor

  CountB=i-1;

  BuCountbbleSort(b,CountB);//集合B排序

  // CountC=BingJi(a,b,c,CountA,CountB);

  CountC=JiaoJi(a,b,c,CountA,CountB);

  printf("\n\n");

  for(i=0;i<=CountC-1;i++)

  {

  printf("%d ",c[i]);

  }

  printf("\n");

  }

  編一C程序,它能根據讀入的數據構造有向圖G,並輸出G的DFS遍歷序列(從V0開始),圖的輸入形式為n V0 Vi0 V1 Vi1 V2 Vi2...Vi Vin -1 -1(-1,-1為輸入結束標記,其余的值都>=0且n>0。

  (注:程序的可執行文件名必須是 e3.exe)

  #include

  typedef enum {False,True} Boolean;

  int G[100][100];

  int n;

  void CreatG() /*建立圖的鄰接矩陣G[][]*/

  {int i,j;

  printf("Input the number of the node:");

  scanf("%d",&n);

  printf("\n");

  for (i=0;i

  for (j=0;j

  G[i][j]=0;

  do

  { scanf("%d %d",&i,&j);

  G[i][j]=1;

  }while ((i!=-1)&&(j!=-1));

  }

  void TopSort() /*拓撲排序,輸出拓撲序列*/

  { int i,j;

  int degree[100]; /*按照無前驅頂點優先思想,degree[]存放個節點的入度.*/

  Boolean visited[100],flag=True;

  printf("The Topolgical Order as follow:");

  for (i=0;i

  { degree[i]=0;

  visited[i]=False;

  }

  printf("\n");

  while(flag==True)

  {

  for (i=0;i

  for (j=0;j

  degree[i]=G[j][i]+degree[i];

  i=0;

  while ((i

  if (i

  {printf(" %d",i);

  visited[i]=True;

  for(j=0;j

  {G[i][j]=0; degree[j]=0;}

  }

  else flag=False;

  }

  }

  main()

  { CreatG();

  TopSort();

  }


From:http://tw.wingwit.com/Article/program/sjjg/201311/23613.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.