九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

第五章1 數(shù)組

  • 資源ID:141614868       資源大?。?span id="24d9guoke414" class="font-tahoma">192KB        全文頁(yè)數(shù):13頁(yè)
  • 資源格式: DOC        下載積分:20積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要20積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說(shuō)明有答案則都視為沒有答案,請(qǐng)知曉。

第五章1 數(shù)組

第5章 數(shù)組作為抽象數(shù)據(jù)類型數(shù)組的類聲明。#nud ioreah>/在頭文件“arrayh”中incudestdbhcost it DeaultSize = 30;template clas pe cassArray /數(shù)組是數(shù)據(jù)類型相同的n(size)個(gè)元素的一個(gè)集合,下標(biāo)范圍從0到1.對(duì)數(shù)組中元素/可按下標(biāo)所指示位置直接訪問(wèn)。private: T *lens;/數(shù)組 in AaySiz;/元素個(gè)數(shù)ublc: Array( itSze = DefultSze );/構(gòu)造函數(shù) Aray(con rrayTy> x );/復(fù)制構(gòu)造函數(shù) Array( ) dete elemts; /析構(gòu)函數(shù) rayTyp & prator=( cot ArrayType A);/數(shù)組整體賦值 (復(fù)制) Typ oeraor ( int i );/按下標(biāo)訪問(wèn)數(shù)組元素 inLenth ( ) const returnrraySiz; /取數(shù)組長(zhǎng)度vdReSiz(in sz );/修改數(shù)組長(zhǎng)度順序表的類定義includ trem.h/定義在頭文件“seqist.h”中#iclude sdlb.hemplate <ass Typelss eLpriae: Type*ata;/順序表的存放數(shù)組 intMxSize;/順序表的最大可容納項(xiàng)數(shù) int lat;/順序表當(dāng)前已存表項(xiàng)的最后位置 ntcurrent;/順序表的當(dāng)前指針(最近處理的表項(xiàng))publi: eqLit( int axSiz );/構(gòu)造函數(shù) SeqList () delete dat; /析構(gòu)函數(shù) nt Length( ) const rurn st+1;/計(jì)算表長(zhǎng)度 int id( y& ) cons;/定位函數(shù): 找x在表中位置,置為當(dāng)前表項(xiàng)ntIsI ( x );/判斷x是否在表中,不置為當(dāng)前表項(xiàng) Tpe GetData ( ) reun urrn= ?ULL : dacrent; 取當(dāng)前表項(xiàng)的值 int Insrt (Type& );/插入在表中當(dāng)前表項(xiàng)之后,置為當(dāng)前表項(xiàng) i Aend (Tp& x );/追加x到表尾,置為當(dāng)前表項(xiàng) Tpe Reoe ( Type& x );/刪除,置下一表項(xiàng)為當(dāng)前表項(xiàng) Tye * First(); /取表中第一個(gè)表項(xiàng)的值,置為當(dāng)前表項(xiàng) Type Next () rurn urn last ? data+rnt : NU; /取當(dāng)前表項(xiàng)的后繼表項(xiàng)的值,置為當(dāng)前表項(xiàng) Tpe Pio( )eturn urren> 0 ? &ata-uent : NLL; /取當(dāng)前表項(xiàng)的前驅(qū)表項(xiàng)的值,置為當(dāng)前表項(xiàng) it IsEmp ( ) rtu as 1; /判斷順序表空否,空則返回;否則返回0 int sFull ( ) returnlast= MxSze;/判斷順序表滿否,滿則返回1; 否則返回02-1 設(shè)個(gè)人圍坐在一個(gè)圓桌周圍,現(xiàn)在從第s個(gè)人開始報(bào)數(shù),數(shù)到第個(gè)人,讓他出局;然后從出局的下一個(gè)人重新開始報(bào)數(shù),數(shù)到第m個(gè)人,再讓他出局,如此反復(fù)直到所有的人全部出局為止。下面要解決的Josphus問(wèn)題是:對(duì)于任意給定的n, s和m,求出這個(gè)人的出局序列。請(qǐng)以n 9, s =1, = 5為例,人工模擬Jephu的求解過(guò)程以求得問(wèn)題的解.【解答】出局人的順序?yàn)?, 1, 7, 4, 3, , 9, 2,。22試編寫一個(gè)求解Joshs問(wèn)題的函數(shù)。用整數(shù)序列1, 2, 3, ,n表示順序圍坐在圓桌周圍的人,并采用數(shù)組表示作為求解過(guò)程中使用的數(shù)據(jù)結(jié)構(gòu).然后使用n 9, s 1, m = 5,以及 = 9, s=, m 0,或者n =9, 1, m = 0作為輸入數(shù)據(jù),檢查你的程序的正確性和健壯性.最后分析所完成算法的時(shí)間復(fù)雜度。【解答】函數(shù)源程序清單如下:void Joseus( int A, n n, s, m ) int , j, k, tm;if ( m = 0 ) cout < " 0是無(wú)效的參數(shù)!” enl; retrn;or ( = 0; i ; i+) Ai = + 1;/初始化,執(zhí)行n次*/i = s - 1;報(bào)名起始位置/for(= n; 1; i-) *逐個(gè)出局,執(zhí)行n-1次*/if( i =k) i= 0; = (i + m 1 ) k;/*尋找出局位置/i ( ! k1) tmp =A;/*出局者交換到第-1位置/ for ( j = ; k-;j+ ) Aj = j+; k1 =tmp;fr (k= ; k /2;+ ) *全部逆置, 得到出局序列/tmp k; k k+1; n-+1 tmp;例:n = , s= 1,m =5 0 12 3 4 56 7 8k = 9 1 2 3 5 67 8第5人出局, i = 4k = 7 8 9 5第1人出局, =0k = 72 3 4 6 7 15第7人出局, i = 4k = 62 3 4 6 897 15第4人出局, = 2k = 2 3 8 9 471 5第3人出局, i = k = 4 8 9 3 4 第6人出局, i = = 2 86 3 4 7 5第9人出局,i 2 = 22 8 9 6 3 71 5第2人出局, i = 8 2 9 6 3 47 1 5第人出局, i = 0逆置5 17 4 3 69 8最終出局順序例:n =9, s , m 報(bào)錯(cuò)信息 m =是無(wú)效的參數(shù)!例:n=9, = 1, 10 0 3 4 5 7 8k= 9 1 2 3 4 56 8 9第1人出局, i=k =82 4 5 6 7 89 1第3人出局, = 1k =72 4 6 8 93第6人出局, i= k =6 2 4 57 8 1第2人出局, i= k =5 5 7 6 3 第9人出局, 4k 4 5 2 6 1第5人出局, i = 1 = 3 78 5 9 2 3 1第7人出局,= 1k=2 8 7 5 9 6 1第4人出局, i= 08 7 5 9 231第8人出局, i = 0逆置 3 2 9 7 48最終出局順序當(dāng)m = 1時(shí),時(shí)間代價(jià)最大。達(dá)到( n ) + ( n- ) + = n(-1)/2» O(2)。設(shè)有一個(gè)線性表(e0, e1, n, e1) 存放在一個(gè)一維數(shù)組Arraize中的前n個(gè)數(shù)組元素位置。請(qǐng)編寫一個(gè)函數(shù)將這個(gè)線性表原地逆置,即將數(shù)組的前個(gè)原址內(nèi)容置換為(n,e2, , 1,e)?!窘獯稹縨lte<lassTypod invere( Typ A ,i n) ype t;fo (int i = 0; i= ( n1 ) ; i+) mp Ai; Ai = A-1; An1 t;2-4 假定數(shù)組AaraySiz中有多個(gè)零元素, 試寫出一個(gè)函數(shù), 將中所有的非零元素依次移到數(shù)組A的前端A(0£ i £rySize)?!窘獯稹恳?yàn)閿?shù)組是一種直接存取的數(shù)據(jù)結(jié)構(gòu),在數(shù)組中元素不是像順序表那樣集中存放于表的前端,而是根據(jù)元素下標(biāo)直接存放于數(shù)組某個(gè)位置,所以將非零元素前移時(shí)必須檢測(cè)整個(gè)數(shù)組空間,并將后面變成零元素的空間清零。函數(shù)中設(shè)置一個(gè)輔助指針free,指示當(dāng)前可存放的位置,初值為0。tempate<class ye void AryTpe> :copact( ) intree = 0; fr ( int i= 0; i <ArraySize; i+ )/檢測(cè)整個(gè)數(shù)組f (elementI != )/發(fā)現(xiàn)非零元素 elemtfr=elmentsi; fre+; elemns= 0; /前移 25 順序表的插入和刪除要求仍然保持各個(gè)元素原來(lái)的次序。設(shè)在等概率情形下, 對(duì)有27個(gè)元素的順序表進(jìn)行插入, 平均需要移動(dòng)多少個(gè)元素? 刪除一個(gè)元素, 又平均需要移動(dòng)多少個(gè)元素?【解答】若設(shè)順序表中已有n las+1個(gè)元素,las是順序表的數(shù)據(jù)成員,表明最后表項(xiàng)的位置。又設(shè)插入或刪除表中各個(gè)元素的概率相等,則在插入時(shí)因有n+1個(gè)插入位置(可以在表中最后一個(gè)表項(xiàng)后面追加),每個(gè)元素位置插入的概率為1/(n+1),但在刪除時(shí)只能在已有n個(gè)表項(xiàng)范圍內(nèi)刪除,所以每個(gè)元素位置刪除的概率為n。插入時(shí)平均移動(dòng)元素個(gè)數(shù)AN(verag Mov umer )為刪除時(shí)平均移動(dòng)元素個(gè)數(shù)AM為26 若矩陣Am´n中的某一元素Aij是第行中的最小值,同時(shí)又是第列中的最大值,則稱此元素為該矩陣的一個(gè)鞍點(diǎn).假設(shè)以二維數(shù)組存放矩陣,試編寫一個(gè)函數(shù),確定鞍點(diǎn)在數(shù)組中的位置(若鞍點(diǎn)存在時(shí)),并分析該函數(shù)的時(shí)間復(fù)雜度?!窘獯稹縤t inmx ( int , cost it , const in ) /在二維數(shù)組Amn中求所有鞍點(diǎn), 它們滿足在行中最小同時(shí)在列中最大 int *row =new nm; in clnei; int i,j; fr ( i = 0; ; i+ )/在各行中選最小數(shù)組元素, 存于ro o = Ai0; for(j = 1;j n; + ) f ( Ai < rw ) rwi= Aj; for ( = 0; ; j+ )/在各列中選最大數(shù)組元素,存于coljli = A0j; fo (i = 1;i< m; i+ ) f( A olj ) colj =Aj; for (i 0; i m; +) /檢測(cè)矩陣,尋找鞍點(diǎn)并輸出其位置for( j =0; j n;j+) ( owi colj ) cou < “The a oint is:(” < “," <<“)” endl; det row;eete cl; 此算法有3個(gè)并列二重循環(huán),其時(shí)間復(fù)雜度為O(m´n).7 設(shè)有一個(gè)二維數(shù)組Am,假設(shè)0存放位置在644(10),A2存放位置在76(0),每個(gè)元素占一個(gè)空間,問(wèn)3(10)存放在什么位置?腳注(10)表示用10進(jìn)制表示.【解答】設(shè)數(shù)組元素Aij存放在起始地址為L(zhǎng)oc ( i, ) 的存儲(chǔ)單元中。 Loc ( ,2 ) = Loc ( , 0 ) 2 * n+ = 644 +2 n2 n =( 676 - 2 644 )/= 15 o (3, 3 )= Loc ( 0, 0) + 3* 1+3 =644 +45+ 3 692-8 利用順序表的操作,實(shí)現(xiàn)以下的函數(shù)。(1)從順序表中刪除具有最小值的元素并由函數(shù)返回被刪元素的值??粘龅奈恢糜勺詈笠粋€(gè)元素填補(bǔ),若順序表為空則顯示出錯(cuò)信息并退出運(yùn)行。(2) 從順序表中刪除第i個(gè)元素并由函數(shù)返回被刪元素的值。如果i不合理或順序表為空則顯示出錯(cuò)信息并退出運(yùn)行。(3) 向順序表中第個(gè)位置插入一個(gè)新的元素x。如果i不合理則顯示出錯(cuò)信息并退出運(yùn)行。(4)從順序表中刪除具有給定值的所有元素。(5) 從順序表中刪除其值在給定值s與t之間(要求s小于t)的所有元素,如果s或t不合理或順序表為空則顯示出錯(cuò)信息并退出運(yùn)行。() 從有序順序表中刪除其值在給定值s與t之間(要求小于)的所有元素,如果s或t不合理或順序表為空則顯示出錯(cuò)信息并退出運(yùn)行。(7)將兩個(gè)有序順序表合并成一個(gè)新的有序順序表并由函數(shù)返回結(jié)果順序表。(8) 從順序表中刪除所有其值重復(fù)的元素,使表中所有元素的值均不相同。【解答】() 實(shí)現(xiàn)刪除具有最小值元素的函數(shù)如下:templte<Type Tp SeqLstTe> :: DlMin ( ) if( last -1 ) /表空, 中止操作返回 crr <“ Lt i Et! ”< ndl; i(); int m = 0;/假定號(hào)元素的值最小 fr ( int 1; i< as;i+ ) /循環(huán), 尋找具有最小值的元素 f( datai datam) ; /讓m指向當(dāng)前具最小值的元素 Tyeemp = dtm; datm = datalt; ast; /空出位置由最后元素填補(bǔ), 表最后元素位置減1 etutep;(2)實(shí)現(xiàn)刪除第i個(gè)元素的函數(shù)如下(設(shè)第i個(gè)元素在datai, i=0,1,¼,t):mplateyTe eqistType> :: DelNoi(it ) i( as = -1 | <0 | last )/表空,或i不合理,中止操作返回 cer “ Lit Empty aameris out rne! ” endl; eit(1); Type temp = datai;/暫存第個(gè)元素的值 or ( int ji;j last;+ )/空出位置由后續(xù)元素順次填補(bǔ) dat =ta+1; st-; /表最后元素位置減1 retn tmp;() 實(shí)現(xiàn)向第i個(gè)位置插入一個(gè)新的元素x的函數(shù)如下(設(shè)第i個(gè)元素在dti, i0,1,¼,last):elateTyp i SeqLis<Type :: Noi(ini, ype ) f( last =Maxize-1 i las+ ) /表滿或參數(shù)i不合理,中止操作返回 crr < “ List is Ful or Parmeter iout range!” < ed; xit(1); fr (intj = ls; j >i;- ) /空出位置以便插入, 若=last, 此循環(huán)不做ataj1 = dataj; atai = x;/插入 las+; /表最后元素位置加1(4) 從順序表中刪除具有給定值x的所有元素。tmpatTpe> void qistTy : DelValue ( Tp x ) int i = 0, j; while( i = ast ) /循環(huán), 尋找具有值x的元素并刪除它 if ( aai = x ) /刪除具有值x的元素, 后續(xù)元素前移for ( j = i;j <at;j+) taj = ata1;st; /表最后元素位置減1 else i+;()實(shí)現(xiàn)刪除其值在給定值s與t之間(要求s小于t)的所有元素的函數(shù)如下:tmplateType voidSeqListype> ::elNoo# (ye&, Tye& t ) if (lst= -1| = t ) rr < “Lis empy or paraetr areillega!" < n; eit(1); nt i = 0, j; ile( i st) /循環(huán),尋找具有值x的元素并刪除它 i( da = s& dat < ) /刪除滿足條件的元素, 后續(xù)元素前移for(j = i; < las; j+ ) daaj= daaj+1;last; /表最后元素位置減 else i+;(6) 實(shí)現(xiàn)從有序順序表中刪除其值在給定值s與t之間的所有元素的函數(shù)如下:tplateTpeodeqListType : DlNo#to#t(Type& , yp&t) f (at | >= ) cerr < “Lit s empty or parameters ar lega!” e; exit(1); or ( it i =0; i < lat; + ) /循環(huán),尋找值 s 的第一個(gè)元素 if ( dat s ) bre; /退出循環(huán)時(shí), i指向該元素 if ( i =last ) for ( intj =1; i+ = last; j+ )循環(huán), 尋找值 t 的第一個(gè)元素if ( atai+ t) brea;/退出循環(huán)時(shí), +j指向該元素 fo (it k = +j; k = last; k+ ) /刪除滿足條件的元素, 后續(xù)元素前移datak datk; lst- j; /表最后元素位置減j (7) 實(shí)現(xiàn)將兩個(gè)有序順序表合并成一個(gè)新的有序順序表的函數(shù)如下:tmpltye SqList<Tye& eqList<Typ>:erge (eLitTp,qListTye& B) /合并有序順序表A與成為一個(gè)新的有序順序表并由函數(shù)返回 f( ALength() + B.Lengt()MaSie ) crr “The mmarof he nt fiss s out MaxSize!” < end; e(); Typ vlu = A.Fist (), va B.Frt ( ); n i , j= , k=; hile ( i Angth ()&j B.length ( ) ) /循環(huán),兩兩比較, 小者存入結(jié)果表 ( value <= lue2 )datak = vale1; vu1 = A。Next( ); i+; els dtak = vale2; value = BNxt (); j+; +; wil ( i< A.Lngth( ) /當(dāng)A表未檢測(cè)完,繼續(xù)向結(jié)果表傳送 datak = value1; value1 = Nt ( ); i+; +; we ( j B.Legt ( ) ) /當(dāng)B表未檢測(cè)完, 繼續(xù)向結(jié)果表傳送 atk vlue2; vu = B。Next (); j+; k+; last = ; reurn his;() 實(shí)現(xiàn)從表中刪除所有其值重復(fù)的元素的函數(shù)如下:temple< vd SqLitype:: DlDle( ) ( ls = -1 ) cr “Lit pty!” <<el; xit(1); t = , j, k; e temp; wile ( i< las ) /循環(huán)檢測(cè) j = i + 1; temp daa; while(j = lat ) /對(duì)于每一個(gè), 重復(fù)檢測(cè)一遍后續(xù)元素i( emp = atj) 如果相等,后續(xù)元素前移 for ( k = ; k< lat; k+ ) dat1=datak; last-; /表最后元素位置減1els j+; i+;/檢測(cè)完dtai, 檢測(cè)下一個(gè) 9 設(shè)有一個(gè)´n的對(duì)稱矩陣A,如圖(a)所示。為了節(jié)約存儲(chǔ),可以只存對(duì)角線及對(duì)角線以上的元素,或者只存對(duì)角線或?qū)蔷€以下的元素。前者稱為上三角矩陣,后者稱為下三角矩陣。我們把它們按行存放于一個(gè)一維數(shù)組中,如圖()和圖(c)所示。并稱之為對(duì)稱矩陣A的壓縮存儲(chǔ)方式.試問(wèn):() 存放對(duì)稱矩陣A上三角部分或下三角部分的一維數(shù)組B有多少元素?(2) 若在一維數(shù)組中從0號(hào)位置開始存放,則如圖()所示的對(duì)稱矩陣中的任一元素ai在只存上三角部分的情形下(圖(b)應(yīng)存于一維數(shù)組的什么下標(biāo)位置?給出計(jì)算公式。(3) 若在一維數(shù)組B中從0號(hào)位置開始存放,則如圖(a)所示的對(duì)稱矩陣中的任一元素ij在只存下三角部分的情形下(圖(c)應(yīng)存于一維數(shù)組的什么下標(biāo)位置?給出計(jì)算公式.【解答】()數(shù)組B共有 ( n- ) + +1= n * (n+1 ) / 2個(gè)元素。(2)只存上三角部分時(shí),若i£ j,則數(shù)組元素Aij前面有i行(1i,第0行第列不算),第1行有n個(gè)元素,第2行有1個(gè)元素,第i1行有ni2個(gè)元素。在第行中,從對(duì)角線算起,第j號(hào)元素排在第j-i+1個(gè)元素位置(從開始),因此,數(shù)組元素Aij在數(shù)組B中的存放位置為n (1) +(n2) + +(i+2) + j-i+1(2i) *(1) + i+= (2n-i) * (i1) /2 + j若i j,數(shù)組元素ij在數(shù)組中沒有存放,可以找它的對(duì)稱元素ji。在數(shù)組B的第(2nj)(j1) / 2 i位置中找到。如果第0行第0列也計(jì)入,數(shù)組B從號(hào)位置開始存放,則數(shù)組元素Ai在數(shù)組B中的存放位置可以改為當(dāng) £ j時(shí),= (2+1) i 2 + j- i( n i 1 ) * i / 2 + j當(dāng) > j時(shí),= (2n- 1) * j / 2+ (3)只存下三角部分時(shí),若i ³j,則數(shù)組元素Ai前面有i行(1-1,第0行第0列不算),第1行有1個(gè)元素,第2行有2個(gè)元素,,第i1行有i1個(gè)元素。在第i行中,第j號(hào)元素排在第個(gè)元素位置,因此,數(shù)組元素Aij在數(shù)組B中的存放位置為1 + +(i1) + j ( i1)*i/ 2+j若i j,數(shù)組元素i在數(shù)組B中沒有存放,可以找它的對(duì)稱元素ji。在數(shù)組B的第 (j-1)j i位置中找到。如果第0行第列也計(jì)入,數(shù)組B從號(hào)位置開始存放,則數(shù)組元素ij在數(shù)組B中的存放位置可以改為當(dāng)i³ j時(shí),= i*(i1)/ 2 + j當(dāng)i j時(shí),= j(1) / 2 i 210 設(shè)A和B均為下三角矩陣,每一個(gè)都有n行。因此在下三角區(qū)域中各有n(n+)2個(gè)元素。另設(shè)有一個(gè)二維數(shù)組,它有n行n1列。試設(shè)計(jì)一個(gè)方案,將兩個(gè)矩陣A和B中的下三角區(qū)域元素存放于同一個(gè)C中.要求將的下三角區(qū)域中的元素存放于C的下三角區(qū)域中,B的下三角區(qū)域中的元素轉(zhuǎn)置后存放于的上三角區(qū)域中。并給出計(jì)算A的矩陣元素ai和B的矩陣元素b在中的存放位置下標(biāo)的公式?!窘獯稹坑?jì)算公式21 在實(shí)際應(yīng)用中經(jīng)常遇到的稀疏矩陣是三對(duì)角矩陣,如右圖所示。在該矩陣中除主對(duì)角線及在主對(duì)角線上下最臨近的兩條對(duì)角線上的元素外,所有其它元素均為?,F(xiàn)在要將三對(duì)角矩陣A中三條對(duì)角線上的元素按行存放在一維數(shù)組B中,且a1存放于B0.試給出計(jì)算A在三條對(duì)角線上的元素i(1£i £ n,i1 £ £ i1)在一維數(shù)組B中的存放位置的計(jì)算公式.【解答】在B中的存放順序?yàn)?1,a12, ,a22,a3, a32, , a4, , an n-, ann ,總共有3n2個(gè)非零元素。元素a在第行,它前面有3(i-1)1個(gè)非零元素,而在本行中第j列前面有ji個(gè),所以元素ij在B中位置為2*ij-.2-12設(shè)帶狀矩陣是´n階的方陣,其中所有的非零元素都在由主對(duì)角線及主對(duì)角線上下各b條對(duì)角線構(gòu)成的帶狀區(qū)域內(nèi),其它都為零元素。試問(wèn):(1) 該帶狀矩陣中有多少個(gè)非零元素?(2)若用一個(gè)一維數(shù)組按行順序存放各行的非零元素,且設(shè)1存放在B0中,請(qǐng)給出一個(gè)公式,計(jì)算任一非零元素aij在一維數(shù)組B中的存放位置?!窘獯稹浚? 主對(duì)角線包含個(gè)非零元素,其上下各有一條包含n-1個(gè)非零元素的次對(duì)角線,再向外,由各有一條包含n2個(gè)非零元素的次對(duì)角線,最外層上下各有一條包含-個(gè)非零元素的次對(duì)角線。則總共的非零元素個(gè)數(shù)有 +(-1)+2(n2) + + 2(n-b) = n+ 2( (n-1)+ (n2 ) + () )()在用一個(gè)一維數(shù)組B按行順序存放各行的非零元素時(shí),若設(shè)bn/,則可按各行非零元素個(gè)數(shù)變化情況,分3種情況討論。當(dāng)1b+1時(shí),矩陣第1行有+個(gè)元素,第2行有b+2個(gè)元素,第3行有b3個(gè)元素,第i行存有b+i個(gè)元素,因此,數(shù)組元素Aij在B 中位置分析如下:第行(1)前面有i1行,元素個(gè)數(shù)為 (b+1)+(b+2)+(+1)= (i1)b+i(i)/,在第i行第j列()前面有j1個(gè)元素,則數(shù)組元素Aij在B中位置為 當(dāng)b+1<in-+時(shí),各行都有b1個(gè)元素.因?yàn)閿?shù)組 前b行共有*b+(b+1)b/2= (b+1)/2個(gè)元素,所以數(shù)組元素A在B 中位置為 當(dāng)nb1<in時(shí),各行元素個(gè)數(shù)逐步減少。當(dāng)i=nb+1時(shí)有2b個(gè)非零元素,當(dāng)i=b+2時(shí)有2b-1個(gè)非零元素,當(dāng)i=nb+3時(shí)有2-個(gè)非零元素,,當(dāng)=n時(shí)有b個(gè)非零元素。因?yàn)榍懊鎛行總共有(3b+1)/2+(n2*b)(2b+)個(gè)非零元素,所以在最后各行數(shù)組元素Aij在B 中位置為 1 稀疏矩陣的三元組表可以用帶行指針數(shù)組的二元組表代替。稀疏矩陣有多少行,在行指針數(shù)組中就有多少個(gè)元素:第i個(gè)元素的數(shù)組下標(biāo)i代表矩陣的第i行,元素的內(nèi)容即為稀疏矩陣第i行的第一個(gè)非零元素在二元組表中的存放位置。二元組表中每個(gè)二元組只記錄非零元素的列號(hào)和元素值,且各二元組按行號(hào)遞增的順序排列。試對(duì)右圖所示的稀疏矩陣,分別建立它的三元組表和帶行指針數(shù)組的二元組表。 二元組表 tacvaue00212112513361441455363879842行指針數(shù)組row00134364757【解答】14 字符串的替換操作rpla (ring &, Strngt,Stri v)是指:若是s的子串,則用串v替換串t在串中的所有出現(xiàn);若t不是s的子串,則串s不變.例如,若串s為“abbabcbaabaaacba”,串t為“bab",串v為“abdc",則執(zhí)行rpa操作后,串s中的結(jié)果為“ababdcabaaab”。試?yán)米址幕具\(yùn)算實(shí)現(xiàn)這個(gè)替換操作?!窘獯稹縎ting trin ::Replace ( trin , String v) if( ( nt i Find( t ) ) = 1 ) /沒有找到,當(dāng)前字符串不改,返回 cout he (replace)eratin filed"< end; retur *ths; Strngtemp( ch );/用當(dāng)前串建立一個(gè)空的臨時(shí)字符串 ch =0; curLen ;/當(dāng)前串作為結(jié)果串,初始為空 int j, k= 0, l;/存放結(jié)果串的指針 while (id != 1) r ( j = 0; j i; j+) chk = temp.chj;摘取temp.ch中匹配位置i(crLen+ id 。curLen <= maxLen) =curLen;/確定替換串v傳送字符數(shù)lels = aLen cLen- i; for ( j =0; j ; j+ ) chk+ =。cj;/連接替換串到結(jié)果串ch后面curLen id l;/修改結(jié)果串連接后的長(zhǎng)度 f (curLen = axLen )bek;/字符串超出范圍 for ( j= id t.cren;j tmp.curen; j+)em.cj- i t。crLen =tem.hj;/刪改原來(lái)的字符串emp。cuLn i .curLen; = teFind (t); rturn this;215 編寫一個(gè)算法requecy,統(tǒng)計(jì)在一個(gè)輸入字符串中各個(gè)不同字符出現(xiàn)的頻度。用適當(dāng)?shù)臏y(cè)試數(shù)據(jù)來(lái)驗(yàn)證這個(gè)算法?!窘獯稹縞lde <iosrinclud "trnh"vod fquenc( Srng s, char& A,int , & ) /s是輸入字符串,數(shù)組 中記錄字符串中有多少種不同的字符,C中記錄每/一種字符的出現(xiàn)次數(shù)。這兩個(gè)數(shù)組都應(yīng)在調(diào)用程序中定義。k返回不同字符數(shù).i i,j, len = sength( );if ( !le ) out e ting s empt. " e; = 0; reun; else A0 = ; 0 = ; k = ; /語(yǔ)句si是串的重載操作* fr ( i = 1;i < len;i+ ) i =0; *初始化 fr(i 1; i e; i+ ) /檢測(cè)串中所有字符*/ ; hle( k & Aj ! s ) +;/檢查si是否已在A 中/ if ( j = k ) Ak = si;Ck+; + /si從未檢測(cè)過(guò)*/ eCj+; /si已經(jīng)檢測(cè)過(guò)*/ 測(cè)試數(shù)據(jù) s "cat castsat a aa0”測(cè)試結(jié)果 Ac s b C 2 4 5【另一解答】nude ioram。hincue str。h”constntharnumber = 18;/ASI碼字符集的大小/voi freqecy( tin,intC) / s是輸入字符串,數(shù)組C 中記錄每一種字符的出現(xiàn)次數(shù)。o( it i = 0; i <cnmbe;i+ )Ci 0; /*初始化/o ( i =0; <s.legt(); i+)/檢測(cè)串中所有字符/ atoi()+;/出現(xiàn)次數(shù)累加/fr( = 0;i canbr; +)*輸出出現(xiàn)字符的出現(xiàn)次數(shù)*/ i ( ) cout< ”( " <i <<" ) : t << i "t”;6設(shè)串s為“aab",串t為“ca”,串r為“cababaacacba",試分別計(jì)算它們的失效函數(shù)f (j)的值?!窘獯稹?j123j0123456aa tcabaaf(j)-10f (j)1-101002-17 設(shè)定整數(shù)數(shù)組Bm+11的數(shù)據(jù)在行、列方向上都按從小到大的順序排序,且整型變量中的數(shù)據(jù)在中存在.試設(shè)計(jì)一個(gè)算法,找出一對(duì)滿足Bj = 的, j值。要求比較次數(shù)不超過(guò)m+n.【解答】算法的思想是逐次二維數(shù)組右上角的元素進(jìn)行比較。每次比較有三種可能的結(jié)果:若相等,則比較結(jié)束;若右上角的元素小于x,則可斷定二維數(shù)組的最上面一行肯定沒有與相等的數(shù)據(jù),下次比較時(shí)搜索范圍可減少一行;若右上角的元素大于x,則可斷定二維數(shù)組的最右面一列肯定不包含與x相等的數(shù)據(jù),下次比較時(shí)可把最右一列剔除出搜索范圍。這樣,每次比較可使搜索范圍減少一行或一列,最多經(jīng)過(guò)m+n次比較就可找到要求的與x相等的數(shù)據(jù)。oi fnd ( in B , in m, itn, int x, int& i, int ) /在二維數(shù)組Bn中尋找與x相等的元素, 找到后, 由i與j返回該數(shù)組元素的位置 = ; j =; whie( Bj != ) if ( j <x) i+; ele j-;不足之處,敬請(qǐng)諒解21 / 13

注意事項(xiàng)

本文(第五章1 數(shù)組)為本站會(huì)員(hy****d)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!