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

正文內容

工學結構體ppt課件-資料下載頁

2024-11-03 20:42本頁面
  

【正文】 點 head的值 ,然后依次通過各結點 next的值找到下一個結點,就可以依次輸出所有結點的數(shù)據(jù),直到鏈表的尾結點為止。 void main( ) { struct student *head1。 cout“input records:”endl。 head1=creat( )。 /*建立鏈表, 并返回表頭 */ print(head1)。 //輸出鏈表 } ? 例 main函數(shù)調用兩個函數(shù) creat( )和 print( ),實現(xiàn)鏈表的 創(chuàng)建 和鏈表數(shù)據(jù)的 輸出 。 head 0001 0002 76 0003 88 NULL void print(struct student *p) { cout“These ”n“ records are:”endl。 if(p==NULL) return。 do{ coutpnum“ ”pscoreendl。 p=pnext。 //使 p指向下一個結點 }while(p!=NULL)。 } 0001 0002 76 0003 88 NULL (next) p p1 p1 void print(struct student *p) { cout“These ”n“ records are:”endl。 if(p==NULL) return。 do{ coutpnum“ ”pscoreendl。 p=pnext。 //使 p指向下一個結點 }while(p!=NULL)。 } 對鏈表的刪除操作是把某個結點從鏈表中摘除 ,并不是真正從內存中將這個結點刪除掉 , 使它脫離原來的鏈表 , 解除原來的鏈接關系 。 算法分析: 以指定的 學號 為刪除標志 。 從指針變量 p指向的第一個結點開始 , 檢查該結點中的 num是否為要刪除的學號 ,如果是則將其刪除 。如果不是 , 則將 p移到下一個結點 , 再繼續(xù)判斷 , 直到刪除或到表尾為止 。 對鏈表的刪除操作 head 0001 0002 76 0003 88 NULL 執(zhí)行過程: 設兩個指針 p1和 p2,先使 p1指向第一個結點 。 如果 p1所指的結點不是要刪除的結點 ,就將 p2指向p1所指的結點 (p2=p1),然后將 p1指向下一個結點 (p1=p1next)。 再繼續(xù)判斷 p1所指的結點是不是要刪除的結點 ,如此重復 ,直到找到要刪除的結點并將其刪除或是檢查完全部鏈表為止 。 head 0001 0002 76 0003 88 NULL p1 p2 p1 0001 0002 76 0003 88 NULL 要刪除的結點分兩種情況: ① 要刪除的是第一個結點 ( 即 p1==head) , 則執(zhí)行head=p1next。 這時 , head指向了原來的第二個結點。 此時 , 第一個結點雖然還存在 , 但它已與鏈表脫離 ,因為鏈表中沒有一個結點或頭指針指向它 , 也就不能訪問它了 , 即已被刪除 。 head p1 head 0001 0002 76 0003 88 NULL head 要刪除的結點分兩種情況: ② 要 刪 除 的 不 是 第 一 個 結 點 , 則 應 執(zhí) 行 p2next=p1next,即 p2next指向了 p1next所指向的結點 , p1所指向的結點就被刪除而不再是鏈表的成員了 。 p1 p2 struct student *dele( student *head, long num) { student *p1, *p2。 if (head==NULL) { coutlist nullendl。 return head。 } p1=head。 while(p1num!=numamp。amp。p1next!=NULL) { p2=p1。 p1=p1next。 } if (num==p1num) { if(p1==head) head=p1next。 else p2next=p1next。 coutdelete:num。 n=n1。 } else coutnumnot been found!endl。 return(head)。 } 對鏈表的插入是指將一個結點插入到一個已有的鏈表中 。 為簡單起見 , 假設有一個學生鏈表 , 各結點已按其成員學號 ( num) 的值 由小到大順序排列 , 現(xiàn)在要插入一個學生的結點 , 要求按學號的順序插入 。 過程分析: 先將要插入的結點學號與第一個結點的學號相比 , 若小則插入到第一個結點前面 , 否則與第二個結點相比 , 如此重復 , 直到找到一個 比它大的學號插入到它的前面 或鏈表結束插入到鏈表的尾部 。 對鏈表的插入操作 過程實現(xiàn): 0001 head 0002 76 0004 88 NULL p2 p1 p0 0003 80 要插入結點指針 前移指針 緊隨指針 過程實現(xiàn): 0001 head 0002 76 0004 88 NULL p2 p1 p0 0003 80 p2next=p0。 P0next=p1。 p0 e t 。 過程實現(xiàn): 0002 head 0003 76 0004 88 NULL p1 p0 0001 80 p2next=p0。 P0next=p1。 head=p0。 p0 e t 。 struct student *insert(student *head,student *stud) { struct student *p0, *p1, *p2。 p1=head。 //p1指向第一個結點 p0=stud。 //p0指向待插入的結點 if(head==NULL) //原來的鏈表是空表 {head=p0。p0next=NULL。} //使 p0指向的結點作為頭結點 else while((p0nump1num)amp。amp。(p1next!=NULL) { p2=p1。 //p2指向 p1所指的結點 p1=p1next。 //p1后移一個結點 } 插入結點的函數(shù)如下 :函數(shù)的參數(shù)是 head和要插入的結點存儲空間首地址指針 (stud), 函數(shù)的返回值是鏈表頭指針 head , head的值可能在函數(shù)執(zhí)行過程中被改變 ( 當插入到第一個結點之前時 ) 。 if(p0num=p1num) { if(head==p1) head=p0。 //插入到第一個結點前面 else p2next=p0。//插入到 p2指向的結點后面 p0next=p1。 } else { p1next=p0。 p0next=NULL。 //插入到最后的結點后面 } n=n+1。 //鏈表結點個數(shù)加 1 return (head)。 } 綜合實習: 數(shù)組、結構體與指針 鏈表操作 : 創(chuàng)建鏈表 輸出鏈表 Main( ) 刪除結點 插入結點 ? EXAMPLE 2. . . 用結構體數(shù)組對 10名學生的成績進行排序(冒泡法和選擇法)。
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1