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

正文內(nèi)容

構(gòu)造數(shù)據(jù)類型ppt課件(參考版)

2024-11-06 23:07本頁(yè)面
  

【正文】 //當(dāng)前結(jié)點(diǎn)的序號(hào),初始化為 1 while (j i1) 。 //p指向第一個(gè)結(jié)點(diǎn)。 } else //要?jiǎng)h除的結(jié)點(diǎn)不是鏈表的第一個(gè)結(jié)點(diǎn)。 delete p。 head = headnext。 { Node *p=head。 //歸還刪除結(jié)點(diǎn)的空間。 //把頭指針置為 NULL。 else //鏈表中只有一個(gè)結(jié)點(diǎn)。 q1next = NULL。 q2 = q2next。 //循環(huán)查找最后一個(gè)結(jié)點(diǎn),找到后, q2指向它, q1指向它的前一個(gè)結(jié)點(diǎn)。 //歸還刪除結(jié)點(diǎn)的空間。 //頭指針指向第一個(gè)結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)。 //p指向第一個(gè)結(jié)點(diǎn)。 cout 沒(méi)有第 i 個(gè)結(jié)點(diǎn) \n。 //把新結(jié)點(diǎn)指定為 q所指向結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)。 //把新結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指定為 q所指向 //結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)。 if (j == i) //q指向第 i個(gè)結(jié)點(diǎn)。 //q指向下一個(gè)結(jié)點(diǎn) j++。 { if (qnext == NULL) break。 int j=1。 ? 圖示為: p a NULL NULL head a1 a2 an q ? 如果新結(jié)點(diǎn)插在鏈表中第 i( i0)個(gè)結(jié)點(diǎn)( ai)的后面,則進(jìn)行下面的操作: Node *q=head。 pnext = NULL。 //循環(huán)結(jié)束后, q指向鏈表最后一個(gè)結(jié)點(diǎn) qnext = p。 ? 圖示為: head p a1 a2 an NULL a ? 如果新結(jié)點(diǎn)插在表尾,則進(jìn)行下面的操作: Node *q=head。 head = p。 } ? 圖示為: p head NULL a ? 如果新結(jié)點(diǎn)插在表頭,則進(jìn)行下面的操作: pnext = head。 //或 , headnext = NULL。 //頭指針指向新結(jié)點(diǎn)。 //把 a賦給新結(jié)點(diǎn)中表示結(jié)點(diǎn)值的成員。 //產(chǎn)生一個(gè)動(dòng)態(tài)變量來(lái)表示新結(jié)點(diǎn)。 //頭指針變量定義,初始狀態(tài)下 //為空值。 //代表后一個(gè)結(jié)點(diǎn)的地址 }。 ? 單鏈表中的結(jié)點(diǎn)類型和表頭指針變量的定義如下: struct Node { int content。 單鏈表 ? 單鏈表的每個(gè)元素只包含一個(gè)指針。 ? 上述的定義隱含著鏈表元素在內(nèi)存中不必存放在連續(xù)的空間內(nèi)。 ? 鏈表 可以避免數(shù)組的上述問(wèn)題! 動(dòng)態(tài)變量的應(yīng)用 ―― 鏈表 ? 鏈表用于表示由若干個(gè)(個(gè)數(shù)不定)同類型的元素所構(gòu)成的具有線性結(jié)構(gòu)的復(fù)合數(shù)據(jù)。 } ? ? 上面的實(shí)現(xiàn)方法雖然可行,但是, ?當(dāng)數(shù)組空間不夠時(shí),它需要重新申請(qǐng)空間、進(jìn)行數(shù)據(jù)轉(zhuǎn)移以及釋放原有的空間,這樣做比較麻煩并且效率有時(shí)不高。 int *q=( int*) realloc ( max_len*sizeof( int)) 。 ...... delete []p。 cin n。 } p[count] = n。 delete []p。 icount。 int *q=new int[max_len]。 cin n。 ? 對(duì)輸入的若干個(gè)數(shù)進(jìn)行排序,在輸入時(shí),先輸入各個(gè)數(shù),最后輸入一個(gè)結(jié)束標(biāo)記(如: 1),這時(shí),可以按以下方式實(shí)現(xiàn): const int INCREMENT=10。 sort(p,n)。 in。 p = new int[n]。 int *p。 ...... *p = 1。 p = new int[10]。 //之后,上面的動(dòng)態(tài)數(shù)組就訪問(wèn)不到了! ? 懸浮指針 :用 delete或 free撤消動(dòng)態(tài)變量后,指針仍指向該變量所對(duì)應(yīng)的空間,這時(shí)就會(huì)出現(xiàn)一個(gè)“ 懸浮指針 ” 。 p = amp。例如: int x,*p。 ?delete p。 ?p = amp。 ? delete與 free的主要區(qū)別是: ?如果 p指向的是對(duì)象(或?qū)ο髷?shù)組),則 delete p(或 delete []p)會(huì)去調(diào)用對(duì)象類的析構(gòu)函數(shù),而 free(p)則否。 ? q= (int *)malloc(sizeof(int))。例如: ? int *p,*q。 ? new與 malloc的主要區(qū)別在于: ?new自動(dòng)計(jì)算所需分配的空間大小,而 malloc則需要顯式指出。 //撤消 q指向的動(dòng)態(tài)數(shù)組 或 ?free(q)。 //撤消 p指向的 int型動(dòng)態(tài)變量 或 ?free(p)。 ...*(q+3)... //或 ...q[3]...,訪問(wèn)上面創(chuàng)建的 //動(dòng)態(tài)數(shù)組中的第 4個(gè)元素 ? 在 C++中,動(dòng)態(tài)變量需要由程序顯式地撤消(使之消亡)。 p = new int。 ■ ? 動(dòng)態(tài)變量沒(méi)有名字,對(duì)動(dòng)態(tài)變量的訪問(wèn)需要通過(guò)指向動(dòng)態(tài)變量的指針變量來(lái)進(jìn)行( 間接訪問(wèn) )。 int* p = (int *) realloc (0,sizeof(int) * 10)。 例: p = (int *) realloc (p, 15*sizeof(int))。 realloc 并不保證調(diào)整后的內(nèi)存空間和原來(lái)的內(nèi)存空間保持同一內(nèi)存地址。 ■ ( 3) realloc(p, m ) — realloc 可以對(duì)給定的空間進(jìn)行擴(kuò)大或者縮小,無(wú)論是擴(kuò)張或是縮小,原有內(nèi)存的中內(nèi)容將保持不變。將需要的存儲(chǔ)空間數(shù)量和單個(gè)空間的字節(jié)數(shù)作為參數(shù)傳遞給該函數(shù)。它的主要優(yōu)點(diǎn)是把動(dòng)態(tài)分配的內(nèi)存清零。這塊內(nèi)存可能包含任何隨機(jī)的垃圾,你可以馬上用有效數(shù)據(jù)或者至少是用零來(lái)初始化這塊內(nèi)存。 例 : int *pointer=(int *)malloc(10*sizeof (int))。 或 ? q = (int *)malloc(sizeof(int)*n)。 //include cstdlib ? 再例如: ? q = new int[n]。 //創(chuàng)建了一個(gè) int型動(dòng)態(tài)變量, p指向之。例如: ? int *p,*q。 sort(a,n)。 in。 int a[n]。 sort(a,100)。 i100。 } 指針與動(dòng)態(tài)變量 ? 對(duì)輸入的 100個(gè)數(shù)進(jìn)行排序: int a[100]。 cout x endl。 int *q=g()。 } int main() {int x 。 return amp。i。 例如: int *f() { int i=0。x[max_index]。 i++) if (x[i] x[max_index]) max_index = i。 for (int i=1。 ...... } 指向常量的指針作為函數(shù)形參類型 指針作為函數(shù)返回值類型 ? 函數(shù)的返回值類型可以是一個(gè)指針類型 。 例如: void g(const A *p) //A為一個(gè)結(jié)構(gòu)類型 { ...... pno = ... //Error,不能改變 p所指向的數(shù)據(jù)。y。 *p = 1。 const int *const p=amp。y。 *p = 1。 int *const p=amp。y。x。 //OK *q = 1。 //Error q = amp。x。 int y。 int *q。a[0],10)... .... } 避免指針參數(shù)帶來(lái)的副作用 ? 指針作為形參的類型可以產(chǎn)生兩個(gè)效果: ?提高參數(shù)傳遞效率:大量數(shù)據(jù)的參數(shù)傳遞 , ?通過(guò)形參改變實(shí)參的值:把函數(shù)的計(jì)算結(jié)果( 有多個(gè) ) 通過(guò)參數(shù)返回給調(diào)用者 。 ...... ...max(a,10)... .... } int main() { int a[10]。 ...... } 再論數(shù)組作為參數(shù)傳遞 ? 在 C++中,數(shù)組參數(shù)的默認(rèn)傳遞方式是把實(shí)參數(shù)組的首地址傳給函數(shù),以提高參數(shù)傳遞效率。a)。 void f(A *p) //p為指向結(jié)構(gòu)類型的指針 { ...... ... pno .... //或者, (*p).no ... pname ... //或者, (*p).name ...... } int main() { A a。 char name[20]。 return 0。 //把 a和 b的地址傳給函數(shù) swap的形參 px和 py。a,amp。 } int main() { int a=0,b=1。 *px = *py。 } 輸出: a=0,b=1 void swap(int *px, int *py) { //交換 px和 py所指向的變量的值。 cout a= a ,b= b endl。 } int main() { int a=0,b=1。 x = y。 //輸出 q指向的字符串: ABCD cout *q。str[0]。 //輸出 x的值 char str[]=ABCD。 cout p。 int *p=amp。 p++) sum += *p。a[9],sum=0。 ...... for (p=amp。 //輸出 3 ? 兩個(gè)同類型的指針比較 ?比較它們所對(duì)應(yīng)的內(nèi)存地址的大小。a[3]。a[0]。 例如: int a[10]。 ? p++。 i10。 ? int sum=0。 ? int *p=amp。 //或 p = a。 p = amp。 例如: int a[10]。x + 2。 int *p。 //1賦值到哪里去了? ?說(shuō)明 :上述語(yǔ)句執(zhí)行起來(lái)危險(xiǎn),會(huì)發(fā)生攥改他人信息 ?內(nèi)存使用原則: ( 1) 使用完后釋放空間,空間內(nèi)容不清空 ( 2)申請(qǐng)后不釋放會(huì)一直占著 ? 一個(gè)指針加上或減去一個(gè)整型值 ? 實(shí)際加 ( 或減 ) 的值由該指針?biāo)赶虻臄?shù)據(jù)類型來(lái)定 。//輸出 ? 請(qǐng)注意下面的問(wèn)題: ?int *p。a。 }; A a。 double d。 *p = 2。 p = amp。 int x。x; ” 后: x p 120: 1 124: 120 ? 執(zhí)行操作: “ *p = 2?!鼻埃僭O(shè) 120和124分別代表變量 x和 p的內(nèi)存地址) x p 120: ? 124: ? ? 執(zhí)行操作: “ x = 1。 或者: int x; int *p=amp。 *p = 1。 p = amp。 指針賦值操作 間接訪問(wèn)操作 (*和 ) ? 可以通過(guò) “ *” 來(lái)訪問(wèn)一個(gè)指針變量指向的變量 , 例如: int x。 p = (int *)120。 p = 120。 p = 0。 p1 = q。 p1 = p。x。 //Error,類型不一致。 p = amp。y。 //OK, p指向 x。 ...... p = amp。x ... //取變量 x的地址 int x,*p,*p1。 //p為一個(gè)指向整數(shù)類型數(shù)據(jù)的指針變量 ? 注意 :指針變量擁有自己的內(nèi)存空間,在該空間中存儲(chǔ)的是另一個(gè)數(shù)據(jù)的內(nèi)存地址 指針變量 指向的數(shù)據(jù) 指針類型的基本操作 ? 取地址 ? 間接訪問(wèn) ? 賦值 ? 指針運(yùn)算 取地址操作 amp。 ? Pointer p。 指針類型變量的定義 ? 指針類型變量(簡(jiǎn)稱:指針變量)的定義格式: ? 指針類型名 指針變量名 ; 或 ? 類型 *指針變量名 。 ? 指針是內(nèi)存地址的抽象表示,一個(gè)指針代表了一個(gè)內(nèi)存地址。 break。 break。 break。 icount。 break。 cout 請(qǐng)輸入圓的圓心坐標(biāo)和半徑 (x,y,r) : 。 break。 cout 請(qǐng)輸入矩形的左上角和右下角坐標(biāo) (x1,y1,x2,y2):。 break。 cout 請(qǐng)輸入線段的起點(diǎn)和終點(diǎn)坐標(biāo) (x1,y1,x2,y2) : 。 if (shape == 1) break。 cin shape。 count++) { int shape。 for (count=0。 ? 訪問(wèn)數(shù)組元素 figures[i]時(shí),通過(guò) figures[i].shape的值就可知道 figures[i]存儲(chǔ)的是什么圖形。 figures[i]. = 100。 figures[i]. = 10。 ? 給一個(gè)數(shù)組元素 figures[i]賦值時(shí),除
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1