freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)結(jié)構(gòu)與算法c語(yǔ)言描述中文-資料下載頁(yè)

2025-06-25 07:26本頁(yè)面
  

【正文】 數(shù)組是一種通用的方法。程序員在編寫循環(huán)時(shí)常犯的錯(cuò)誤即可能是寫死循環(huán)的上限值(如果數(shù)組是動(dòng)態(tài)的,那么這樣做就是錯(cuò)誤的,因?yàn)檠h(huán)的上限可能會(huì)改變),也可能是每次循環(huán)重復(fù)時(shí)調(diào)用函數(shù)來(lái)存取循環(huán)的上限:(for( int i = 0。 i = (0)。 i++)totalSales = totalSales + sales[i]。Array類為取回?cái)?shù)組元數(shù)據(jù)提供了幾種屬性:l Length:返回?cái)?shù)組所有維數(shù)內(nèi)元素的總數(shù)量。l GetLength:返回?cái)?shù)組指定維數(shù)內(nèi)元素的數(shù)量。l Rank:返回?cái)?shù)組的維數(shù)。l GetType:返回當(dāng)前數(shù)組實(shí)例的類型。Length方法對(duì)于計(jì)算多維數(shù)組中元素的數(shù)量以及返回?cái)?shù)組中元素的準(zhǔn)確編號(hào)都是很有用的。另外,還可以使用GetUpperBound方法,而且要對(duì)數(shù)值加一。既然Length返回?cái)?shù)組元素的總數(shù)量,所以GetLength方法統(tǒng)計(jì)了數(shù)組某一維內(nèi)元素的數(shù)量。這種方法和Rank屬性一起可用來(lái)在運(yùn)行時(shí)調(diào)整數(shù)組的大小,而且不必冒丟失數(shù)據(jù)的風(fēng)險(xiǎn)。此方法將在本章的后續(xù)內(nèi)容中進(jìn)行討論。在無(wú)法確定數(shù)組類型的情況下,GetType方法可以用來(lái)確定數(shù)組的數(shù)據(jù)類型,比如數(shù)組作為參數(shù)傳遞給方法的時(shí)候。在下列代碼段中,為了確定對(duì)象是否是數(shù)組,這里創(chuàng)建了一個(gè)類型變量Type,此變量允許用來(lái)調(diào)用類方法IsArray。如果對(duì)象是一個(gè)數(shù)組,那么代碼返回?cái)?shù)組的數(shù)據(jù)類型。 int[] numbers。numbers = new int[] { 0, 1, 2, 3, 4 }。Type arrayType = ()。if ()(The array type is: {0}, arrayType)。else (Not an array)。 ()。 Gettype方法不僅返回?cái)?shù)組的類型,而且還讓大家明白對(duì)象確實(shí)是一個(gè)數(shù)組。下面是代碼的輸出:The array type is: []這里的方括號(hào)說(shuō)明對(duì)象是一個(gè)數(shù)組。還需要注意在顯示數(shù)據(jù)類型的時(shí)候采用了一種格式。這里必須這么做,因?yàn)橐裈ype數(shù)據(jù)與顯示的字符串的剩余部分相連接就不能把Type數(shù)據(jù)轉(zhuǎn)變成為字符串。到目前為止的討論只限于一維數(shù)組的情況。在C語(yǔ)言中,盡管數(shù)組多于三維的情況是非常少見(jiàn)的(而且也是非常容易使人混亂的),但是數(shù)組還是可以達(dá)到32維的。通過(guò)提供數(shù)組每一維上限值的方式可以聲明多維數(shù)組。二維數(shù)組的聲明: int [ , ] grades = new int [4,5] 。此語(yǔ)句聲明了一個(gè)4行5列的數(shù)組。二維數(shù)組經(jīng)常用來(lái)模擬矩陣。 聲明多維數(shù)組也可以不指定維數(shù)的上限值。要想這樣做就要用到逗號(hào)來(lái)明確數(shù)組的維數(shù)。例如,聲明一個(gè)二維數(shù)組如下所示 double [ , ] Sales 。再比如聲明一個(gè)三維數(shù)組, double [ , , ] Sales 。在聲明不帶維數(shù)上限的數(shù)組的時(shí)候,需要稍后對(duì)具有這類上限的數(shù)組重新確定維數(shù): sales = new double [4,5] 。對(duì)多維數(shù)組可以用初始化表進(jìn)行初始化操作。請(qǐng)看下面這條語(yǔ)句: Iint[,] grades = new int[,] {{1, 82, 74, 89, 100},{2, 93, 96, 85, 86},{3, 83, 72, 95, 89},{4, 91, 98, 79, 88}}。 首先要注意這里沒(méi)有指明數(shù)組的上限。當(dāng)初始化帶有初始化表的數(shù)組的時(shí)候,不用說(shuō)明數(shù)組的上限。編譯器會(huì)根據(jù)初始化表中數(shù)據(jù)計(jì)算出每一維的上限值。初始化表本身也像數(shù)組的每一行那樣用大括號(hào)進(jìn)行標(biāo)記。數(shù)組行內(nèi)的每一個(gè)元素則用逗號(hào)進(jìn)行分割。存取訪問(wèn)多維數(shù)組元素的方法類似于存取一維數(shù)組元素的方法。大家可以采用傳統(tǒng)的數(shù)組存取訪問(wèn)方式,grade = gGrades[2,2]。gGrades([2,2]) = 99也可以采用Array類的方法: grade = ([0,2)]。但是,對(duì)多維數(shù)組不能使用SetValue方法。這是因?yàn)檫@種方法只接收兩個(gè)參數(shù):一個(gè)數(shù)值和一個(gè)單獨(dú)的索引。盡管常常是基于存儲(chǔ)在數(shù)組行中的數(shù)值或者是基于存儲(chǔ)在數(shù)組列中的數(shù)值進(jìn)行計(jì)算,但是 對(duì)多維數(shù)組上所有元素的計(jì)算還是很常見(jiàn)的操作。假設(shè)有一個(gè)Grades數(shù)組,且數(shù)組的每一行是一條學(xué)生記錄,那么就能如下所示計(jì)算出每個(gè)學(xué)生的平均成績(jī): int[,] grades = new int[,] {{1, 82, 74, 89, 100},{2, 93, 96, 85, 86},{3, 83, 72, 95, 89},{4, 91, 98, 79, 88}}。int last_grade = (1)。double average = 。int total。int last_student = (0)。for(int row = 0。 row = last_student。 row++) {total = 0。for (int col = 0。 col = last_grade。 col++)total += grades[row, col]。average = total / last_grade。(Average: + average)。} 大多數(shù)的方法定義要求一套提供給方法的參數(shù)的數(shù)目,但是想要編寫一個(gè)允許可選參數(shù)數(shù)目的方法定義是需要時(shí)間的。用一種稱為參數(shù)數(shù)組的構(gòu)造就可以做到。通過(guò)使用關(guān)鍵字ParamArray就可以在方法定義的參數(shù)列表中指明參數(shù)數(shù)組。下面的方法定義允許提供任意數(shù)量的數(shù)作為參數(shù),并且方法會(huì)返回?cái)?shù)的總量:static int sumNums(params int[] nums){int sum = 0。for (int i = 0。 i = (0)。 i++) sum += nums[i]。return sum。}此方法可以處理下列任意一種調(diào)用:total = sumNums(1, 2, 3)。total = sumNums(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)。當(dāng)用參數(shù)數(shù)組定義方法的時(shí)候,為了使編譯器能夠正確處理參數(shù)列表,需要在參數(shù)列表的最后提供參數(shù)數(shù)組的參數(shù)。否則,編譯器無(wú)法知道參數(shù)數(shù)組元素的截止位置以及方法其他參數(shù)的起始位置。 在創(chuàng)建一個(gè)多維數(shù)組的時(shí)候,需要始終新建一種每行都有相同元素?cái)?shù)量的結(jié)構(gòu)。例如,下面這個(gè)數(shù)組的聲明: int sales[,] = new int[12,30]。 39。// Sales for each day of each month這個(gè)數(shù)組假設(shè)每行(即月數(shù))都有相同的元素(即天數(shù))數(shù)量,但是大家知道某些月有30天,而某些月是31天,還有一個(gè)月是29天。因而,這個(gè)剛剛聲明的數(shù)組會(huì)有幾個(gè)空元素在其中。對(duì)于這個(gè)數(shù)組而言,這不是太大的問(wèn)題,但是對(duì)于更加龐大的數(shù)組而言,就需要減少大量浪費(fèi)的空間。解決這個(gè)問(wèn)題的方法是用鋸齒狀數(shù)組代替二維數(shù)組。鋸齒狀數(shù)組是一種每行都能組成一個(gè)數(shù)組的數(shù)組。鋸齒狀數(shù)組的每一維就是一個(gè)一維數(shù)組。大家稱其為“鋸齒狀”數(shù)組的原因是由于數(shù)組每一行元素的數(shù)量都可能不相同。鋸齒狀數(shù)組的圖形不是正方形或矩形,而是具有不均勻邊緣或鋸齒邊緣的圖形。鋸齒狀數(shù)組的聲明需要通過(guò)在數(shù)組變量名后放置兩組方括號(hào)的方式來(lái)完成。第一組方括號(hào)說(shuō)明了數(shù)組的行數(shù)。第二組方括號(hào)則是留白的。這為存儲(chǔ)在每行內(nèi)的一維數(shù)組標(biāo)記了位置。通常情況下,聲明語(yǔ)句的初始化列表會(huì)設(shè)置行數(shù),就像下列這樣:int[][] jagged = new int[12][]。這條語(yǔ)句看上去很奇怪,但是把它分解后就一目了然了。jagged是一個(gè)有著12個(gè)元素的整數(shù)數(shù)組,其中的每個(gè)元素又是一個(gè)整數(shù)數(shù)組。初始化列表實(shí)際上就是對(duì)數(shù)組行的初始化,這表明每一個(gè)行元素都是一個(gè)有著12個(gè)元素的數(shù)組,而且每個(gè)元素都初始化為默認(rèn)的值。一旦聲明了鋸齒狀的數(shù)組,就可以分別對(duì)各自行數(shù)組的元素進(jìn)行賦值操作了。下面這段代碼對(duì)jaggedArray進(jìn)行了賦值操作:jagged[0][0] = 23。jagged[0][1] = 13。. . .jagged[7][5] = 45。第一組方括號(hào)說(shuō)明了行編號(hào),而第二組方括號(hào)則表明了行數(shù)組的元素。第一條語(yǔ)句存取訪問(wèn)到第一個(gè)數(shù)組的第一個(gè)元素,接著第二條語(yǔ)句存取訪問(wèn)了第一個(gè)數(shù)組的第二個(gè)元素,而第三條語(yǔ)句存取訪問(wèn)的則是第八個(gè)數(shù)組的第六個(gè)元素。為了做一個(gè)使用鋸齒狀數(shù)組的實(shí)例,下邊這段程序創(chuàng)建了一個(gè)名為sales的數(shù)組(用來(lái)跟蹤兩個(gè)月內(nèi)每星期的銷售情況),并且把銷售額賦值給數(shù)組的元素,然后循環(huán)遍歷整個(gè)數(shù)組從而計(jì)算出存儲(chǔ)在數(shù)組內(nèi)的每月一個(gè)星期的平均銷售額。using System。class class1{ static void Main()[] { int[] Jan = new int[31]。 int[] Feb = new int[29]。 int[][] sales = new int[][] { Jan, Feb }。 int month, day, total。 double average = 。 sales[0][0] = 41。 sales[0][1] = 30。 sales[0][0] = 41。 sales[0][1] = 30。 sales[0][2] = 23。 sales[0][3] = 34。 sales[0][4] = 28。 sales[0][5] = 35。 sales[0][6] = 45。 sales[1][0] = 35。 sales[1][1] = 37。 sales[1][2] = 32。 sales[1][3] = 26。 sales[1][4] = 45。 sales[1][5] = 38。 sales[1][6] = 42。 for(month = 0。 month = 1。 month++) { total = 0。 for(day = 0。 day = 6。 day++) { total += sales[month][day]。 } average = total / 7。 (Average sales for month: +month + : + average)。 } }}當(dāng)無(wú)法提前知道數(shù)組的大小或者在程序運(yùn)行期間數(shù)組的大小可能會(huì)發(fā)生改變的時(shí)候,靜態(tài)數(shù)組就不是很適用了。這類問(wèn)題的一種解決方案就是當(dāng)數(shù)組超出存儲(chǔ)空間的時(shí)使用能夠自動(dòng)調(diào)整自身大小的數(shù)組類型。這種數(shù)組被稱為是ArrayList。ArrayList對(duì)象擁有可存儲(chǔ)數(shù)組大小尺寸的Capacity屬性。該屬性的初始值為16。當(dāng)ArrayList中元素的數(shù)量達(dá)到此界限值時(shí),Capacity屬性就會(huì)為ArrayList的存儲(chǔ)空間另外增加16個(gè)元素。在數(shù)組內(nèi)元素?cái)?shù)量有可能擴(kuò)大或縮小的情況下使用ArrayList會(huì)比用帶標(biāo)準(zhǔn)數(shù)組的ReDim Preserver更加有效。就像第1章討論過(guò)的那樣,ArrayList用Object類型來(lái)存儲(chǔ)對(duì)象。如果需要強(qiáng)類型的數(shù)組,就應(yīng)該采用標(biāo)準(zhǔn)數(shù)組或者其他一些數(shù)據(jù)結(jié)構(gòu)。ArrayList類包含幾種用于ArrayList的方法和屬性。下面這個(gè)列表就是最常用到的一些方法和屬性:l Add( ):向ArrayList添加一個(gè)元素。l AddRange( ):在ArrayList末尾處添加群集的元素。l Capacity:存儲(chǔ)ArrayList所能包含的元素的數(shù)量。l Clear( ):從ArrayList中移除全部元素。l Contains( ):確定制定的對(duì)象是否在ArrayList內(nèi)。l Copy To( ):把ArrayList或其中的某一段復(fù)制給一個(gè)數(shù)組。l Count:返回ArrayList中當(dāng)前元素的數(shù)量。l GetEnumerator( ):返回迭代ArrayList的計(jì)數(shù)器。l GetRange( ):返回ArrayList的子集作為ArrayList。l IndexOf( ):返回指定數(shù)據(jù)項(xiàng)首次出現(xiàn)的索引。l Insert( ):在ArrayList的指定索引處插入一個(gè)元素。l InsertRange( ):從ArrayList指定索引處開(kāi)始插入群集的元素。l
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1