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

正文內(nèi)容

構(gòu)造數(shù)據(jù)類(lèi)型ppt課件-wenkub.com

2024-10-31 23:07 本頁(yè)面
   

【正文】 int j=1。 //歸還刪除結(jié)點(diǎn)的空間。 //p指向第一個(gè)結(jié)點(diǎn)。 delete q2。 //把倒數(shù)第二個(gè)結(jié)點(diǎn)的 next置為 NULL。 while (q2next != NULL) { q1 = q2。 delete p。 ? 圖示為: q head p a1 ai an a NULL 在鏈表中刪除一個(gè)結(jié)點(diǎn) 下面的操作假設(shè)鏈表不為空,即: head != NULL ? 如果刪除鏈表中第一個(gè)結(jié)點(diǎn),則進(jìn)行下面的操作: Node *p=head。 qnext = p。 //結(jié)點(diǎn)序號(hào)增加 1 } //循環(huán)結(jié)束時(shí), q或者指向第 i個(gè)結(jié)點(diǎn),或者指向最后一個(gè)結(jié)點(diǎn)(結(jié)點(diǎn)數(shù)不夠 i時(shí))。 //當(dāng)前結(jié)點(diǎn)的序號(hào),初始化為 1 while (j i) //循環(huán)查找第 i個(gè)結(jié)點(diǎn)。 //把新結(jié)點(diǎn)的 next成員置為 NULL。 //q指向第一個(gè)結(jié)點(diǎn) while (qnext != NULL) //循環(huán)查找最后一個(gè)結(jié)點(diǎn) q = qnext。 //把新結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指定為 //鏈表原來(lái)的第一個(gè)結(jié)點(diǎn)。 pnext = NULL。 pcontent = a。 //結(jié)點(diǎn)的類(lèi)型定義 Node *head=NULL。 ? 需要一個(gè) 頭指針 ,指向第一個(gè)元素。 ? 鏈表中的每一個(gè)元素除了本身的數(shù)據(jù)外,還 包含一個(gè)(或多個(gè))指針 ,它(們)指向鏈表中下一個(gè)(和其它)元素。 if ( q!=NULL) p=q。 } sort(p,count)。 p = q。 for (int i=0。 int max_len=20,count=0,n,*p=new int[max_len]。 i++) cin p[i]。 cin n。 ...... delete []p。x。 //Error “內(nèi)存泄漏”與“懸浮指針”問(wèn)題 ? 內(nèi)存泄漏 :沒(méi)有撤消動(dòng)態(tài)對(duì)象,而把指向它的指針指向了別處,這時(shí),這個(gè)動(dòng)態(tài)變量存在但不可訪問(wèn),從而浪費(fèi)空間。 ? 用 delete和 free只能撤消動(dòng)態(tài)變量! ?int x,*p。 ? p = new int。 ? 用 new創(chuàng)建的動(dòng)態(tài)變量需要用 delete來(lái)撤銷(xiāo);用 malloc創(chuàng)建的動(dòng)態(tài)變量則需要用free撤銷(xiāo)。例如: ?delete p。例如: int *p,*q。 說(shuō)明 :傳一個(gè)空指針( 0)給 realloc 時(shí), realloc 相當(dāng)于malloc。當(dāng)然,對(duì)于縮小,則被縮小的那一部分的內(nèi)容會(huì)丟失。 返回值是指向最新分配的內(nèi)存的指針,而如果內(nèi)存沒(méi)有分配好,則返回值是 NULL。 說(shuō)明 : malloc( )返回的內(nèi)存是 “ 沒(méi)有 “ 初始化的。 //創(chuàng)建了一個(gè)由 n個(gè) int型元素所構(gòu)成 //的動(dòng)態(tài)數(shù)組變量, q指向其第一個(gè)元素。 ? p = new int。 i++) cin a[i]。 ? 對(duì)輸入的若干個(gè)數(shù)進(jìn)行排序,下面的做法可行嗎? int n; cin n。 for (int i=0。 x=*p+*q。j。 return amp。 return amp。 例如: int *max(int x[], int num) { int max_index=0。 //Error ? 如果只需要指針參數(shù)的第一種效果 , 則應(yīng)把形參定義為 指向常量的指針 。x。 //OK p = amp。 //? OK //p為 指針常量 int x, y。 //OK q = amp。 //OK *p = 1。 const int x=0。 ...... ...max(amp。 //把結(jié)構(gòu)變量的地址傳給函數(shù) f。 ...... }。 cout a= a ,b= b endl。 swap(amp。 int t=*px。 swap(a,b)。 //輸出 q指向的字符: A cout (void *)q //輸出 p的值,即字符串 ABCD的內(nèi)存首地址 指針的輸出 指針的主要作用 ? 提高參數(shù)傳遞的效率 ? 實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu) ? 高效訪問(wèn)數(shù)組元素 指針作為形參類(lèi)型 void swap(int x, int y) { int t=x。 char *q=amp。x。 p=q。例如: int a[10],sum,*p,*q。 int *q = amp。 ? } ? 兩個(gè)同類(lèi)型的指針相減 ?實(shí)際結(jié)果由指針?biāo)赶虻念?lèi)型來(lái)定 。 ? for (int i=0。 訪問(wèn)數(shù)組 a的元素可采用: ? a[0]、 a[1]、 ...、 a[9] ? *p、 *(p+1)、 ...、 *(p+9) ? p[0]、 p[1]、 ...、 p[9] 指針的運(yùn)算 ? int a[10]。 int *p。 p = amp。 ?*p = 1。 A *p=amp。 ? 對(duì)于一個(gè)指向結(jié)構(gòu)類(lèi)型變量的指針變量,如果通過(guò)該指針變量來(lái)訪問(wèn)相應(yīng)結(jié)構(gòu)變量的成員,則可以寫(xiě)成: ? (*指針變量 ).結(jié)構(gòu)成員 或 ? 指針變量 結(jié)構(gòu)成員 例如: struct A { int i。 x = 1?!焙螅? x p 120: 1 124: ? ? 執(zhí)行操作: “ p = amp。 //等價(jià)于: x = 1。 int *p。 //Error, 120為 int型。 //Error,類(lèi)型不一致。 //Error,類(lèi)型不一致。y。 q = amp。 double y,*q。 //p為一個(gè)指向整數(shù)類(lèi)型數(shù)據(jù)的指針變量 或 ? int *p。 ? 指針類(lèi)型是一種用戶(hù)自定義的簡(jiǎn)單類(lèi)型,它的值集是由一些內(nèi)存地址(指針)構(gòu)成。 case CIRCLE: draw_circle(figures[i].circle)。 i++) { switch (figures[i].shape) { case LINE: draw_line(figures[i].line)。 cin figures[count]. figures[count]. figures[count].。 cin figures[count]. figures[count]. figures[count]. figures[count].。 cin figures[count]. figures[count]. figures[count]. figures[count].。 } while (shape 1 || shape 2)。 countMAX_NUM_OF_FIGURES。 figures[i]. = 200。例如: figures[i].shape = LINE。 Rectangle rect。 double x,y,r。 struct Rectangle { FigureShape place_holder。 ? 上面的表示存在問(wèn)題: ? 無(wú)法區(qū)分存儲(chǔ)在 figures[i]中的是什么圖形! ? 解決上面問(wèn)題的辦法是: enum FigureShape { LINE, RECTANGLE, CIRCLE }。 union Figure { Line line。 struct Rectangle { double left, top, right, bottom。 Figure figures[MAX_NUM_OF_FIGURES]。 AB buffer。 //輸出什么呢? ? 也可利用聯(lián)合類(lèi)型來(lái)實(shí)現(xiàn)多種數(shù)據(jù)共享內(nèi)存空間。 ? 對(duì)于一個(gè)聯(lián)合類(lèi)型的變量,在程序中將會(huì)分階段地把它作為不同的類(lèi)型來(lái)使用,而不會(huì)同時(shí)把它作為幾種類(lèi)型來(lái)用。A39。 ? cout sizeof(a)。 }。 例 :針對(duì)一批學(xué)生信息實(shí)現(xiàn)以下功能 ? 統(tǒng)計(jì)計(jì)算機(jī)專(zhuān)業(yè)男生人數(shù) ? 統(tǒng)計(jì)出生地為 “ 南京 ” 的學(xué)生人數(shù) ? 按學(xué)號(hào)由小到大輸出學(xué)生信息 程序如下: 程序 聯(lián)合( union)類(lèi)型 ? 聯(lián)合類(lèi)型 用于實(shí)現(xiàn) 用一個(gè)類(lèi)型表示多種類(lèi)型的數(shù)據(jù) 。 ?其內(nèi)存空間安排如下: ?結(jié)構(gòu)成員的內(nèi)存空間之間可能會(huì)存在 “ 空隙 ” ! (一般遵循偶字節(jié)對(duì)齊原則, vc遵循 4字節(jié)對(duì)齊) 例 ?可用 sizeof計(jì)算結(jié)構(gòu)類(lèi)型的大小 向函數(shù)傳遞結(jié)構(gòu)數(shù)據(jù) ? 可作為參數(shù)傳給函數(shù) , 默認(rèn)參數(shù)傳遞方式為 值傳遞 , 例如: void f(Student st) { ....... } ...... Student st1。 double d。 //Error } ? 也可以一個(gè)成員一個(gè)成員初始化 。 ? st = today。 } ? 賦值 ?可以對(duì)結(jié)構(gòu)類(lèi)型數(shù)據(jù)進(jìn)行整體結(jié)構(gòu)賦值 , 例如: ? Student st1,st2。 B b。 struct B { char name[5]。 ? strcpy(,張三 )。 例: struct Student{…… } st, st1; ( 4) struct {成員表 } 結(jié)構(gòu)類(lèi)型 變量名 。 enum Major { MATHEMATICS, PHYSICS, CHEMISTRY,COMPUTER, GEOGRAPHY, ASTRONOMY,ENGLISH, CHINESE,PHILOSOPHY}。 }。 Sex sex。 return 0。 } //找最后一個(gè)小孩 for (index=0。 } in_circle[index] = false。 { index = (index+1)%N。 //從編號(hào)為 0的小孩開(kāi)始報(bào)數(shù), //index為前一個(gè)小孩的位置。 for (index=0。 const int N=20,M=5。 ?用變量 count來(lái)對(duì)成功的報(bào)數(shù)進(jìn)行計(jì)數(shù),每一輪報(bào)數(shù)前, count為 0,每成功地報(bào)一次數(shù),就把 count加 1,直到 M為止。矩陣 C中的任意元素Cij=∑aik*bkj ? 程序?yàn)椋?程序 ? 如果要求將矩陣的輸入與相乘用函數(shù)實(shí)現(xiàn),各子函數(shù)如何寫(xiě) ? 例 :求解約瑟夫( Josephus)問(wèn)題 ? 約瑟夫( Josephus)問(wèn)題是:有 N個(gè)小孩圍坐成一圈,從某個(gè)小孩開(kāi)始順時(shí)針報(bào)數(shù),報(bào)到 M的小孩從圈子離開(kāi),然后,從下一個(gè)小孩開(kāi)始重新報(bào)數(shù),每報(bào)到 M,相應(yīng)的小孩從圈子離開(kāi),最后一個(gè)離開(kāi)圈子的小孩為勝者,問(wèn)勝者是哪一個(gè)小孩? ? 采用一個(gè)一維的循環(huán)數(shù)組 in_circle來(lái)表示小孩圍成一圈: bool in_circle[N]。 ...... cout sum(a[0],10*5) endl。 inum。 ? 下面的二維數(shù)組 c就不能調(diào)用函數(shù) sum來(lái)計(jì)算其元素的和,因?yàn)?c的列數(shù)與函數(shù) sum要求的列數(shù)不符: int c[40][20]。 } ? 注意: 二維數(shù)組作為函數(shù)參數(shù)傳遞時(shí)實(shí)際傳遞的也是數(shù)組的首地址 ,因此,二維數(shù)組形參的 列數(shù)必須要寫(xiě) ,否則,函數(shù)體中無(wú)法計(jì)算 x[i][j]的內(nèi)存地址: ? x[i][j]的地址 = x的首地址 + i 列數(shù) + j ? 調(diào)用者需要提供一個(gè)二維數(shù)組變量( 列數(shù)要與形參相同 )的名和行數(shù)。 i++) for (int j=0。 其內(nèi)存空間分配如下: a[0][0] ... a[0][4] a[1][0] ... a[1][4] ...... a[9][0] ... a[9][4] 向函數(shù)傳遞二維數(shù)組 ? 被調(diào)用函數(shù)的形參應(yīng)為不帶數(shù)組行數(shù)的二維數(shù)組定義及其行數(shù)。 ? 以上初始化按照數(shù)組的行來(lái)進(jìn)行 int a[2][3]={{1,2},{3,4}}。 } return 0。 jN。 } //輸出轉(zhuǎn)置后的矩陣 cout 轉(zhuǎn)置后為: \n。 jN。 j++) cin a[i][j]。 for (i=0。 int main() { const int N=3。 i++) for (int j=0。 ? a[0]、 a[1]、 ...、 a[9] ? 上面每一個(gè)都為一個(gè)一維數(shù)組,代表二維數(shù)組中的一行 ? 對(duì)二維數(shù)組的操作通常是通過(guò)其元素來(lái)進(jìn)行。 ?B a[10]。 或 ? 一維數(shù)組類(lèi)型 一維數(shù)組變量 [元素個(gè)數(shù) ] ? 元素類(lèi)型 為任意 C++類(lèi)型( void除外)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1