【正文】
} 實(shí)例的部分程序 P268 【 實(shí)例 12】 用結(jié)構(gòu)體類型數(shù)據(jù),編寫實(shí)現(xiàn)電子通訊錄功能的程序。 free (p)。 if ( p == NULL ) return 0。 p = pnext。 p = head next。 int mydelete ( LST *head, int m ) { LST *p, *q。 if ( m != p num ) p q head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 尾結(jié)點(diǎn) 結(jié)點(diǎn) 2 101 103 105 \0 刪除結(jié)點(diǎn) q next = p next。 p = p next。 head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 尾結(jié)點(diǎn) 結(jié)點(diǎn) 2 p 101 103 105 \0 q、 p都移到下一個(gè)結(jié)點(diǎn)。 q head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 尾結(jié)點(diǎn) 結(jié)點(diǎn) 2 p 101 103 105 \0 q、 p都移到下一個(gè)結(jié)點(diǎn) 。 head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 尾結(jié)點(diǎn) 結(jié)點(diǎn) 2 101 103 105 \0 判斷是否找到需刪結(jié)點(diǎn)。 q q = head。 } ( 6)編寫 mydelete ( )函數(shù),并用此函數(shù)代替對(duì)應(yīng)的空函數(shù)后運(yùn)行程序。 s next = p。 p = p next。 p = head next。 s num = m。 q void myinsert ( LST *head, int m ) { LST *p, *q, *s。 s next = p。 q head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 尾結(jié)點(diǎn) 結(jié)點(diǎn) 2 新結(jié)點(diǎn) s 101 103 105 \0 104 判斷是否找到插入點(diǎn)。 q = q next。 p q = q next。 if ( p num = m ) p 結(jié)點(diǎn) 2 head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 尾結(jié)點(diǎn) 結(jié)點(diǎn) 2 新結(jié)點(diǎn) s 101 103 105 \0 104 q p q、 p都移到下一個(gè)結(jié)點(diǎn)。 p = p next。 p head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 尾結(jié)點(diǎn) 結(jié)點(diǎn) 2 新結(jié)點(diǎn) s 101 103 105 \0 104 q q、 p都移到下一個(gè)結(jié)點(diǎn)。 head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 尾結(jié)點(diǎn) 結(jié)點(diǎn) 2 新結(jié)點(diǎn) s 101 103 105 \0 104 q q、 p都移到下一個(gè)結(jié)點(diǎn)。 head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 尾結(jié)點(diǎn) 結(jié)點(diǎn) 2 新結(jié)點(diǎn) s 101 103 105 \0 104 q p 判斷是否找到插入點(diǎn)。 q = head。 s num = m。 s = (LST*)malloc ( sizeof (LST) )。 } ( 5)編寫 myinsert ( )函數(shù),并用此函數(shù)代替對(duì)應(yīng)的空函數(shù)后運(yùn)行程序。 } while ( p != NULL )。 else do { printf ( %5d, p num )。 p = head next。 不存在 , 所以 p=NULL p = p next。 105 移動(dòng) p,即使 p指向下一個(gè)結(jié)點(diǎn)。 head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 結(jié)點(diǎn) 2 尾結(jié)點(diǎn) \0 101 103 105 輸出 p所指結(jié)點(diǎn)的 num成員值。 p head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 結(jié)點(diǎn) 2 尾結(jié)點(diǎn) \0 101 103 105 移動(dòng) p,即使 p指向下一個(gè)結(jié)點(diǎn)。 p printf (%5d, p num )。 p p = p next。 101 head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 結(jié)點(diǎn) 2 尾結(jié)點(diǎn) \0 101 103 105 移動(dòng) p,即使 p指向下一個(gè)結(jié)點(diǎn)。 head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 結(jié)點(diǎn) 2 尾結(jié)點(diǎn) \0 101 103 105 輸出 p所指結(jié)點(diǎn)的 num成員值。 head 頭結(jié)點(diǎn) 結(jié)點(diǎn) 1 結(jié)點(diǎn) 2 尾結(jié)點(diǎn) \0 101 103 105 使指針 p指向鏈表中結(jié)點(diǎn) 1 。 return head 。m )。 printf (Input m: )。 p num = m。 while (m != 1 ) { p = (LST*)malloc ( sizeof (LST) )。 scanf (%d, amp。 printf (建立鏈表,請(qǐng)輸入數(shù)值: \n )。 head = (LST*)malloc ( sizeof (LST) )。 head 頭結(jié)點(diǎn) num next 結(jié)點(diǎn) 1 num next 新結(jié)點(diǎn) num next 101 q 103 p \0 LST *mycreat ( ) { int m。 返回鏈表頭結(jié)點(diǎn)的地址 。 q next = NULL。 101 q 103 p ( 3)編寫 mycreat( )函數(shù),并用此函數(shù)代替對(duì)應(yīng)的空函數(shù)后運(yùn)行程序。 head 頭結(jié)點(diǎn) num next 結(jié)點(diǎn) 1 num next 新結(jié)點(diǎn) num next 使 q指向新鏈表的最后一個(gè)結(jié)點(diǎn)。 head 頭結(jié)點(diǎn) num next 結(jié)點(diǎn) 1 num next 新結(jié)點(diǎn) num next 使 q指向新鏈表的最后一個(gè)結(jié)點(diǎn)。 p num = m。 101 q p ( 3)編寫 mycreat( )函數(shù),并用此函數(shù)代替對(duì)應(yīng)的空函數(shù)后運(yùn)行程序。 head 頭結(jié)點(diǎn) num next 結(jié)點(diǎn) 1 num next 新結(jié)點(diǎn) num next 連接新結(jié)點(diǎn)和當(dāng)前鏈表的最后結(jié)點(diǎn) 。 101 p q p = (LST *) malloc ( sizeof (LST) )。 101 p q ( 3)編寫 mycreat( )函數(shù),并用此函數(shù)代替對(duì)應(yīng)的空函數(shù)后運(yùn)行程序。 101 p ( 3)編寫 mycreat( )函數(shù),并用此函數(shù)代替對(duì)應(yīng)的空函數(shù)后運(yùn)行程序。 head 頭結(jié)點(diǎn) q num next 結(jié)點(diǎn) 1 num next 使 q指向新鏈表的最后一個(gè)結(jié)點(diǎn)。 head 頭結(jié)點(diǎn) q num next 結(jié)點(diǎn) 1 num next 使 q指向新鏈表的最后一個(gè)結(jié)點(diǎn)。 p num = m。 p ( 3)編寫 mycreat( )函數(shù),并用此函數(shù)代替對(duì)應(yīng)的空函數(shù)后運(yùn)行程序。 head 頭結(jié)點(diǎn) q num next 結(jié)點(diǎn) 1 num next 連接新結(jié)點(diǎn)和當(dāng)前鏈表的最后結(jié)點(diǎn)。 p = (LST *) malloc ( sizeof (LST) )。 ( 3)編寫 mycreat( )函數(shù),并用此函數(shù)代替對(duì)應(yīng)的空函數(shù)后運(yùn)行程序。 head 頭結(jié)點(diǎn) q num next 使指針變量 q也指向該頭結(jié)點(diǎn)。 head = (LST *) malloc ( sizeof (LST) )。 } } ( 3)編寫 mycreat( )函數(shù),并用此函數(shù)代替對(duì)應(yīng)的空函數(shù)后運(yùn)行程序。 } else printf ( “不存在 \n )。 if ( k == 1 ) { printf(刪除點(diǎn)后 : )。m)。 case 2: printf (刪除點(diǎn) : )。 myprint ( head )。 myinsert ( head, m )。 scanf(%d, amp。choose )。 printf (“ 請(qǐng)選擇: ” )。