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

數據結構考研分類復習真題 第二章 答案[27]

2013-11-15 15:23:52  來源: 數據結構 

  類似本題的選了 個題其解答如下

  ()與上面第題不同的是這裡要求以an為參考元素將線性表分成左右兩部分左半部分的元素都小於等於an右半部分的元素都大於anan位於分界位置上其算法主要片段語句如下:

  i=;j=n;
  t=a[n];∥暫存參考元素
  while(i<j)
  {while(i<j && a[i]<=t)  i++;∥當前元素不大於參考元素時指針i後移
  if(i<j)  a[j]=a[i];∥將大於參考元素的元素後移
  while(i<j && a[j]>t)  j;∥當前元素大於參考元素時指針前移
  if(i<j)  a[i++]=a[j];∥將小於參考元素的當前元素前移
  }
  a[i]=t;∥參考元素置於分界位置

  () [題目分析]本題要求將線性表A分成B和C兩個表表B和表C不另占空間而是利用表A的空間其算法與第題相同這裡僅把表B和表C另設空間的算法解答如下

  void  Rearrange(int A[]B[]C[])∥線性表A有n個整型元素順序存儲本算法將A拆成B和C 兩個表B中存放大於等於零的元素C中存放小於零的元素
  {i=;∥ijk是工作指針分別指向AB和C表的當前元素
  j=k=;∥jk初始化為
  while(i<n)
  {if(A[i]<)  C[++k]=A[i++];∥將小於零的元素放入C表
  else  B[++j]=A[i++];∥將大於零的元素放入B表

[]  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  []  


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