版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 5.3.1 5.3.1 定義結(jié)構(gòu)例:struct employee char name 10 ; long code ; double salary ; char address 50 ; char phone 20 ; ; 可以用不同方法定義一個結(jié)構(gòu)變量可以用不同方法定義一個結(jié)構(gòu)變量(1) 聲明類型之后聲明變量employee worker1, worker2, *Emp ;第1頁/共321頁 5.3.1 5.3.1 定義結(jié)構(gòu)例:struct employee char name 10 ; long code ; double salary ; char address 50 ; char
2、 phone 20 ; ; 可以用不同方法定義一個結(jié)構(gòu)變量可以用不同方法定義一個結(jié)構(gòu)變量(1) 聲明類型之后聲明變量worker1, worker2, *Emp ;(2) 聲明類型的同時聲明變量第2頁/共321頁 5.3.1 5.3.1 定義結(jié)構(gòu)例:struct employee char name 10 ; long code ; double salary ; char address 50 ; char phone 20 ; ; 可以用不同方法定義一個結(jié)構(gòu)變量可以用不同方法定義一個結(jié)構(gòu)變量(1) 聲明類型之后聲明變量worker1, worker2, *Emp ;(2) 聲明類型的同時聲
3、明變量(3) 直接聲明結(jié)構(gòu)類型變量注意此時沒有了結(jié)構(gòu)類型標識符第3頁/共321頁 5.3.1 5.3.1 定義結(jié)構(gòu)例:struct employee char name 10 ; long code ; double salary ; char address 50 ; char phone 20 ; ;employee worker1, worker2, *Emp = &worker1 ; 說明說明(1) 結(jié)構(gòu)變量占有一片連續(xù)內(nèi)存 空間,具有結(jié)構(gòu)類型的特征Wang Li9910834561200.5guang zhou87111111worker1Emp第4頁/共321頁 5.3.1
4、 5.3.1 定義結(jié)構(gòu) 說明說明(2) 一個結(jié)構(gòu)類型的成員 可以是另一個已定義的結(jié)構(gòu)類型struct date int month ; int day ; int year ; ;struct employee char name 10 ; date birthday ; long code ; double salary ; char address 50 ; char phone 11 ; worker1, worker2 ;例如: 為職工結(jié)構(gòu)添加出生日期信息 類型和變量聲明為:第5頁/共321頁 son ; 5.3.1 5.3.1 定義結(jié)構(gòu) 說明說明(2) 一個結(jié)構(gòu)類型的成員 可以是另一
5、個已定義的結(jié)構(gòu)類型struct char name 10 ; long code ; double salary ; char address 50 ; char phone 11 ; worker1, worker2 ;錯誤不能實現(xiàn)的無窮遞歸結(jié)構(gòu)第6頁/共321頁 5.3.1 5.3.1 定義結(jié)構(gòu) 說明說明(3) 聲明結(jié)構(gòu)類型變量可以同時初始化struct employee char name 10 ; long code ; double salary ; char address 50 ; char phone 11 ; worker = Wang Li , 991083456, 120
6、0.5, guang zhou , 87111111 ;第7頁/共321頁(1)訪問結(jié)構(gòu)變量的成員結(jié)構(gòu)變量 . 成員點運算符/例5-7# include using namespace std ;struct weather/ 聲明結(jié)構(gòu)類型 double temp; double wind; ;int main ( ) weather today ;/ 聲明結(jié)構(gòu)類型變量 today . temp = 10.5 ;/ 對結(jié)構(gòu)變量成員賦值 today . wind = 3.1 ; cout “Temp = ” today . temp endl ; / 按成員輸出 cout “Wind = ” t
7、oday . wind 成員 (*結(jié)構(gòu)指針 ) . 成員/例5-8# include using namespace std ;# include struct person char name20 ; unsigned long id; double salary; ;int main ( ) person pr1 ; person * pp ;/ 定義結(jié)構(gòu)指針 pp = & pr1 ;/ 取結(jié)構(gòu)變量地址 strcpy ( pp - name , “David Marat” ) ;/ 對結(jié)構(gòu)成員賦值 pp - id = 987654321 ; pp - salary = 335.0
8、; cout name t id t salary 成員 (*結(jié)構(gòu)指針 ) . 成員/例5-8# include using namespace std ;# include struct person char name20 ; unsigned long id; double salary; ;int main ( ) person pr1 ; person * pp ;/ 定義結(jié)構(gòu)指針 pp = & pr1 ;/ 取結(jié)構(gòu)變量地址 strcpy ( pp - name , “David Marat” ) ;/ 對結(jié)構(gòu)成員賦值 pp - id = 987654321 ; pp - s
9、alary = 335.0 ; cout name t id t salary endl ;5 . 1 . 2 5 . 1 . 2 訪 問 結(jié) 構(gòu)5.3.2 5.3.2 訪問結(jié)構(gòu)第10頁/共321頁/例5-9# include using namespace std ;struct weather double temp; double wind; yesterday ;int main ( ) weather today ; yesterday . temp = 10.5 ; yesterday . wind = 3.1 ; today = yesterday ;/ 結(jié)構(gòu)變量整體賦值 cou
10、t “Temp = ” today . temp endl ; cout “Wind = ” today . wind endl ;(3)類型相同的結(jié)構(gòu)變量可以整體賦值5 . 1 . 2 5 . 1 . 2 訪 問 結(jié) 構(gòu)5.3.2 5.3.2 訪問結(jié)構(gòu)第11頁/共321頁(3)類型相同的結(jié)構(gòu)變量可以整體賦值例如:struct weather1 double temp; double wind; yesterday ;struct weather2 double temp; double wind; today ;“類型相同的變量” 是指用同一類型標識符說明的變量yesterday 和 tod
11、ay盡管成員相同,但不是同類型變量不可以整體賦值5 . 1 . 2 5 . 1 . 2 訪 問 結(jié) 構(gòu)5.3.2 5.3.2 訪問結(jié)構(gòu)第12頁/共321頁5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第13頁/共321頁例如struct S_type int a; double x; ;S_type S_ary10;S_ary是一個有10個元素的數(shù)組,元素類型是S_type。數(shù)組的每一個元素包含兩個數(shù)據(jù)成員。S_ary0.a S_ary0.xS_ary1.a S_ary1.xS_ary9.a S_ary9.x5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組5.4 5.4 結(jié)構(gòu)數(shù)組 數(shù)組的元素類型為結(jié)構(gòu)類型時,稱
12、為結(jié)構(gòu)數(shù)組。第14頁/共321頁# include using namespace std ;struct person/ 結(jié)構(gòu)定義 char name10 ; unsigned int id; double salary ; ;person allone6 ;/ 結(jié)構(gòu)數(shù)組聲明int main ( ) int i ; person temp ;/ 結(jié)構(gòu)變量聲明 for ( i = 0 ; i 6 ; i + )/ 輸入數(shù)據(jù) cout i : name: ; cgets ( ) ; cout allonei.id ; cout allonei.salary ; cout
13、 endl ; ;cout Sort:n ; for ( i=1 ; i 6 ; i + )/ 以成員salary作關(guān)鍵字排序 for ( int j = 0 ; j allonej+1.salary ) / 結(jié)構(gòu)變量的整體交換 temp = allonej ; allonej = allonej+1 ; allonej+1 = temp ; for ( i = 0 ; i 6 ; i + )/ 輸出排序后數(shù)據(jù) cout t allonei.id t allonei.salary endl ;例5-10 對結(jié)構(gòu)數(shù)組以某一成員作關(guān)鍵字排序5 . 2 5 . 2 結(jié) 構(gòu)
14、數(shù) 組第15頁/共321頁# include using namespace std ;struct person/ 結(jié)構(gòu)定義 char name10 ; unsigned int id; double salary ; ;person allone6 ;/ 結(jié)構(gòu)數(shù)組聲明int main ( ) int i ; person temp ;/ 結(jié)構(gòu)變量聲明 for ( i = 0 ; i 6 ; i + )/ 輸入數(shù)據(jù) cout i : name: ; cgets ( ) ; cout allonei.id ; cout allonei.salary ; cout en
15、dl ; ;cout Sort:n ; for ( i=1 ; i 6 ; i + )/ 以成員salary作關(guān)鍵字排序 for ( int j = 0 ; j allonej+1.salary ) / 結(jié)構(gòu)變量的整體交換 temp = allonej ; allonej = allonej+1 ; allonej+1 = temp ; for ( i = 0 ; i 6 ; i + )/ 輸出排序后數(shù)據(jù) cout t allonei.id t allonei.salary endl ;例5-10 對結(jié)構(gòu)數(shù)組以某一成員作關(guān)鍵字排序struct person/ 結(jié)構(gòu)定義
16、 char name10 ; unsigned int id; double salary ; ;person allone6 ;/ 結(jié)構(gòu)數(shù)組聲明5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第16頁/共321頁# include using namespace std ;struct person/ 結(jié)構(gòu)定義 char name10 ; unsigned int id; double salary ; ;person allone6 ;/ 結(jié)構(gòu)數(shù)組聲明int main ( ) int i ; person temp ;/ 結(jié)構(gòu)變量聲明 for ( i = 0 ; i 6 ; i + )/ 輸入數(shù)據(jù)
17、cout i : name: ; cgets ( ) ; cout allonei.id ; cout allonei.salary ; cout endl ; ;cout Sort:n ; for ( i=1 ; i 6 ; i + )/ 以成員salary作關(guān)鍵字排序 for ( int j = 0 ; j allonej+1.salary ) / 結(jié)構(gòu)變量的整體交換 temp = allonej ; allonej = allonej+1 ; allonej+1 = temp ; for ( i = 0 ; i 6 ; i + )/ 輸出排序后數(shù)據(jù) cout a
18、 t allonei.id t allonei.salary endl ;例5-10 對結(jié)構(gòu)數(shù)組以某一成員作關(guān)鍵字排序int main ( ) int i ; person temp ; / 結(jié)構(gòu)變量聲明 for ( i = 0 ; i 6 ; i + ) / 輸入數(shù)據(jù) cout i : name: ; cgets ( ) ; cout allonei.id ; cout allonei.salary ; cout endl ; ;接受空格輸入5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第17頁/共321頁# include using namespa
19、ce std ;struct person/ 結(jié)構(gòu)定義 char name10 ; unsigned int id; double salary ; ;person allone6 ;/ 結(jié)構(gòu)數(shù)組聲明int main ( ) int i ; person temp ;/ 結(jié)構(gòu)變量聲明 for ( i = 0 ; i 6 ; i + )/ 輸入數(shù)據(jù) cout i : name: ; cgets ( ) ; cout allonei.id ; cout allonei.salary ; cout endl ; ;cout Sort:n ; for ( i=1 ; i 6
20、; i + )/ 以成員salary作關(guān)鍵字排序 for ( int j = 0 ; j allonej+1.salary ) / 結(jié)構(gòu)變量的整體交換 temp = allonej ; allonej = allonej+1 ; allonej+1 = temp ; for ( i = 0 ; i 6 ; i + )/ 輸出排序后數(shù)據(jù) cout t allonei.id t allonei.salary endl ;例5-10 對結(jié)構(gòu)數(shù)組以某一成員作關(guān)鍵字排序cout “Sort:n ; for ( i=1 ; i 6 ; i + )/ 以成員salary作關(guān)鍵字排序
21、 for ( int j = 0 ; j allonej+1.salary ) / 結(jié)構(gòu)變量的整體交換 temp = allonej ; allonej = allonej+1 ; allonej+1 = temp ; 冒泡排序5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第18頁/共321頁# include using namespace std ;struct person/ 結(jié)構(gòu)定義 char name10 ; unsigned int id; double salary ; ;person allone6 ;/ 結(jié)構(gòu)數(shù)組聲明int main ( ) int i ; person temp ;
22、/ 結(jié)構(gòu)變量聲明 for ( i = 0 ; i 6 ; i + )/ 輸入數(shù)據(jù) cout i : name: ; cgets ( ) ; cout allonei.id ; cout allonei.salary ; cout endl ; ;cout Sort:n ; for ( i=1 ; i 6 ; i + )/ 以成員salary作關(guān)鍵字排序 for ( int j = 0 ; j allonej+1.salary ) / 結(jié)構(gòu)變量的整體交換 temp = allonej ; allonej = allonej+1 ; allonej+1 = temp ;
23、for ( i = 0 ; i 6 ; i + )/ 輸出排序后數(shù)據(jù) cout t allonei.id t allonei.salary endl ;例5-10 對結(jié)構(gòu)數(shù)組以某一成員作關(guān)鍵字排序for ( i = 0 ; i 6 ; i + )/ 輸出排序后數(shù)據(jù) tallonei.idtallonei.salaryendl ;5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第19頁/共321頁# include using namespace std ;struct person/ 結(jié)構(gòu)定義 char name10 ; unsigned int
24、 id; double salary ; ;person allone6 ;/ 結(jié)構(gòu)數(shù)組聲明int main ( ) int i ; person temp ;/ 結(jié)構(gòu)變量聲明 for ( i = 0 ; i 6 ; i + )/ 輸入數(shù)據(jù) cout i : name: ; cgets ( ) ; cout allonei.id ; cout allonei.salary ; cout endl ; ;cout Sort:n ; for ( i=1 ; i 6 ; i + )/ 以成員salary作關(guān)鍵字排序 for ( int j = 0 ; j allonej+1
25、.salary ) / 結(jié)構(gòu)變量的整體交換 temp = allonej ; allonej = allonej+1 ; allonej+1 = temp ; for ( i = 0 ; i 6 ; i + )/ 輸出排序后數(shù)據(jù) cout t allonei.id t allonei.salary endl ;例5-10 對結(jié)構(gòu)數(shù)組以某一成員作關(guān)鍵字排序5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第20頁/共321頁問題: 結(jié)構(gòu)變量的整體交換降低了排序效率解決: 使用索引機制, 建立結(jié)構(gòu)指針數(shù)組方法 :1. 建立索引數(shù)組2. 以關(guān)鍵字作依據(jù)進行數(shù)據(jù)比較,移動索引3. 通過索
26、引訪問數(shù)據(jù)5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第21頁/共321頁使用索引排序allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.0pa 0 &allone0 1 &allone1 2 &allone2 3 &allone3 4 &allone4 5 &allone51. 建立索引數(shù)組2. 排序(冒泡法)5 . 2 5 .
27、2 結(jié) 構(gòu) 數(shù) 組第22頁/共321頁使用索引排序1. 建立索引數(shù)組2. 排序(冒泡法)pa 0 &allone0 1 &allone1 2 &allone2 3 &allone3 4 &allone4 5 &allone5allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第23頁/共
28、321頁使用索引排序1. 建立索引數(shù)組2. 排序(冒泡法)pa 0 &allone0 1 &allone1 2 &allone2 3 &allone3 4 &allone4 5 &allone5allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.0即 allone0 . salary allone2 . salarypa 0
29、&allone0 1 &allone1 2 &allone2 3 &allone3 4 &allone4 5 &allone5pa 1 pa 2 allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第26頁/共321頁使用索引排序使用索引排序1. 建立索引數(shù)組2. 排序(冒泡法)即 al
30、lone1 . salary allone2 . salarypa 0 &allone0 1 2 3 &allone3 4 &allone4 5 &allone5pa 1 pa 2 allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.0&allone2&allone15 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第27頁/共321頁使
31、用索引排序使用索引排序1. 建立索引數(shù)組2. 排序(冒泡法)pa 0 &allone0 1 &allone2 2 &allone1 3 &allone3 4 &allone4 5 &allone5allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第28頁/共321頁使用索引排序使用索引
32、排序即 allone1 .salary allone4 .salarypa 0 &allone0 1 &allone2 2 &allone1 3 &allone3 4 &allone4 5 &allone5pa 3 pa 4 allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立
33、索引數(shù)組2. 排序(冒泡法)第31頁/共321頁使用索引排序使用索引排序pa 0 &allone0 1 &allone2 2 &allone1 3 4 5 &allone5allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.0&allone4&allone35 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒
34、泡法)即 allone3 . salary allone4 .salarypa 3 pa 4 第32頁/共321頁使用索引排序pa 0 &allone0 1 &allone2 2 &allone1 3 &allone4 4 &allone3 5 &allone5allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2
35、5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第33頁/共321頁使用索引排序使用索引排序即 allone3 . salary allone5 . salarypa 0 &allone0 1 &allone2 2 &allone1 3 &allone4 4 &allone3 5 &allone5pa 4 pa 5 allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter
36、23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第34頁/共321頁使用索引排序使用索引排序即 allone3 . salary allone5 . salarypa 0 &allone0 1 &allone2 2 &allone1 3 &allone4 4 5 pa 4 pa 5 &allone5&allone3allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519
37、 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第35頁/共321頁使用索引排序使用索引排序pa 0 &allone0 1 &allone2 2 &allone1 3 &allone4 4 &allone5 5 &allone3allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3
38、Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第36頁/共321頁使用索引排序使用索引排序即 allone0 . salary allone2 .salarypa 0 &allone0 1 &allone2 2 &allone1 3 &allone4 4 &allone5 5 &allone3pa 0 pa 2 allone name id salary 0 Jone 12345 339.0 1 David
39、 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第37頁/共321頁使用索引排序使用索引排序即 allone0 . salary allone2 .salarypa 0 1 2 &allone1 3 &allone4 4 &allone5 5 &allone3pa 0 pa 2 allone name id salary 0 Jone 12345 339.
40、0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.0&allone2&allone05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第38頁/共321頁使用索引排序使用索引排序pa 0 &allone2 1 &allone0 2 &allone1 3 &allone4 4 &allone5 5 &allone3allone name id salary 0
41、Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第39頁/共321頁使用索引排序使用索引排序即 allone0 .salary allone4 . salarypa 0 &allone2 1 &allone0 2 &allone1 3 &allone4 4 &allone5 5 &allone
42、3pa 2 pa 3 allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第42頁/共321頁使用索引排序使用索引排序即 allone1 . salary allone4 . salarypa 0 &allone2 1 &allone0 2 3 4 &allone5 5 &
43、amp;allone3pa 2 pa 3 allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.0&allone4&allone15 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第43頁/共321頁使用索引排序使用索引排序pa 0 &allone2 1 &allone0 2 &allone4 3 &a
44、llone1 4 &allone5 5 &allone3allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第44頁/共321頁使用索引排序使用索引排序即 allone1 . salary allone5 . salary不交換pa 0 &allone2 1 &al
45、lone0 2 &allone4 3 &allone1 4 &allone5 5 &allone3allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第45頁/共321頁使用索引排序使用索引排序排序結(jié)果:pa 0 &allone2 1 &allone
46、0 2 &allone4 3 &allone1 4 &allone5 5 &allone3allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.05 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第46頁/共321頁使用索引排序使用索引排序排序結(jié)果:pa 0 &allone2 1 &allone0 2
47、&allone4 3 &allone1 4 &allone5 5 &allone3allone name id salary 0 Jone 12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.03. 輸出for ( k = 0; k6; k+) coutnameidsalary; 5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組1. 建立索引數(shù)組2. 排序(冒泡法)第47頁/共321頁: person * p
48、a6 = &allone0 , &allone1 , &allone2 , &allone3 , &allone4 , &allone5 ; person * temp; :for ( i = 1 ; i 6 ; i + + ) for ( int j = 0 ; j salary pa j+1 - salary ) temp = pa j ; pa j = pa j+1 ; pa j+1 = temp ; 5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第48頁/共321頁使用索引排序使用索引排序allone name id salary 0 Jone
49、12345 339.0 1 David 13916 449.0 2 Marit 27519 311.0 3 Jasen 42876 623.0 4 Peter 23987 400.0 5 Yoke 12335 511.0pa 0 0 1 1 2 2 3 3 4 4 5 5若索引數(shù)組說明為:int pa 6 = 0, 1, 2, 3, 4 , 5 ;想一想程序該如何修改? 請你試一試5 . 2 5 . 2 結(jié) 構(gòu) 數(shù) 組第49頁/共321頁第50頁/共321頁 程序?qū)?shù)據(jù)的表示,不但要求存放基本信息,還要表示與其它數(shù)程序?qū)?shù)據(jù)的表示,不但要求存放基本信息,還要表示與其它數(shù)據(jù)元素的關(guān)系據(jù)元素的關(guān)系
50、 線性表是最簡單的數(shù)據(jù)組織形式線性表是最簡單的數(shù)據(jù)組織形式5 . 3 5 . 3 鏈 表5.5 5.5 鏈表第51頁/共321頁5 . 3 5 . 3 鏈 表5.5 5.5 鏈表1 1動態(tài)鏈表存儲 3208Chen204630104016Li320532084048Zhang10454016NULLWang165040483010head結(jié)點第52頁/共321頁5 . 3 5 . 3 鏈 表5.5 5.5 鏈表1 1動態(tài)鏈表存儲 3208Chen204630104016Li320532084048Zhang10454016NULLWang165040483010head數(shù)據(jù)元素信息第53頁/共
51、321頁5 . 3 5 . 3 鏈 表5.5 5.5 鏈表1 1動態(tài)鏈表存儲 3208Chen204630104016Li320532084048Zhang10454016NULLWang165040483010head元素關(guān)系第54頁/共321頁5 . 3 5 . 3 鏈 表5.5 5.5 鏈表1 1動態(tài)鏈表存儲 3208Chen204630104016Li320532084048Zhang10454016NULLWang165040483010head結(jié)點數(shù)據(jù)類型struct node char name20 ; double salary ; node * next ; ; 單向鏈表結(jié)點
52、數(shù)據(jù)類型struct node dataType data ; node * next ; ; 第55頁/共321頁建立鏈表的過程:生成頭結(jié)點;while(未結(jié)束) 生成新結(jié)點; 把新結(jié)點插入鏈表;struct node int data ; node * next ; ; node * head ; node * CreateList() node * s, * p ; s = new node ; cin s-data ; head = NULL ; while ( s-data != 0 ) if ( head = NULL ) head = s ; else p-next = s ;
53、p = s ; s = new node ; cin s-data ; p - next = NULL ; delete s ; return ( head ) ;5 . 3 5 . 3 鏈 表第56頁/共321頁建立鏈表的過程:生成頭結(jié)點;while(未結(jié)束) 生成新結(jié)點; 把新結(jié)點插入鏈表;struct node int data ; node * next ; ; node * head ; node * CreateList() node * s, * p ; s = new node ; cin s-data ; head = NULL ; while ( s-data != 0 )
54、 if ( head = NULL ) head = s ; else p-next = s ; p = s ; s = new node ; cin s-data ; p - next = NULL ; delete s ; return ( head ) ;結(jié)構(gòu)類型5 . 3 5 . 3 鏈 表第57頁/共321頁建立鏈表的過程:生成頭結(jié)點;while(未結(jié)束) 生成新結(jié)點; 把新結(jié)點插入鏈表;struct node int data ; node * next ; ; node * head ; node * CreateList() node * s, * p ; s = new no
55、de ; cin s-data ; head = NULL ; while ( s-data != 0 ) if ( head = NULL ) head = s ; else p-next = s ; p = s ; s = new node ; cin s-data ; p - next = NULL ; delete s ; return ( head ) ;頭指針5 . 3 5 . 3 鏈 表第58頁/共321頁建立鏈表的過程:生成頭結(jié)點;while(未結(jié)束) 生成新結(jié)點; 把新結(jié)點插入鏈表;struct node int data ; node * next ; ; node * h
56、ead ; node * CreateList() node * s, * p ; s = new node ; cin s-data ; head = NULL ; while ( s-data != 0 ) if ( head = NULL ) head = s ; else p-next = s ; p = s ; s = new node ; cin s-data ; p - next = NULL ; delete s ; return ( head ) ;建立鏈表函數(shù)返回頭指針5 . 3 5 . 3 鏈 表第59頁/共321頁建立鏈表的過程:生成頭結(jié)點;while(未結(jié)束) 生成新
57、結(jié)點; 把新結(jié)點插入鏈表;struct node int data ; node * next ; ; node * head ; node * CreateList() node * s, * p ; s = new node ; cin s-data ; head = NULL ; while ( s-data != 0 ) if ( head = NULL ) head = s ; else p-next = s ; p = s ; s = new node ; cin s-data ; p - next = NULL ; delete s ; return ( head ) ;聲明局部
58、量5 . 3 5 . 3 鏈 表第60頁/共321頁建立鏈表的過程:生成頭結(jié)點;while(未結(jié)束) 生成新結(jié)點; 把新結(jié)點插入鏈表;struct node int data ; node * next ; ; node * head ; node * CreateList() node * s, * p ; s = new node ; cin s-data ; head = NULL ; while ( s-data != 0 ) if ( head = NULL ) head = s ; else p-next = s ; p = s ; s = new node ; cin s-dat
59、a ; p - next = NULL ; delete s ; return ( head ) ;建立第一個結(jié)點5 . 3 5 . 3 鏈 表第61頁/共321頁建立鏈表的過程:生成頭結(jié)點;while(未結(jié)束) 生成新結(jié)點; 把新結(jié)點插入鏈表;struct node int data ; node * next ; ; node * head ; node * CreateList() node * s, * p ; s = new node ; cin s-data ; head = NULL ; while ( s-data != 0 ) if ( head = NULL ) head
60、= s ; else p-next = s ; p = s ; s = new node ; cin s-data ; p - next = NULL ; delete s ; return ( head ) ;鏈表頭指針初始化5 . 3 5 . 3 鏈 表第62頁/共321頁建立鏈表的過程:生成頭結(jié)點;while(未結(jié)束) 生成新結(jié)點; 把新結(jié)點插入鏈表;struct node int data ; node * next ; ; node * head ; node * CreateList() node * s, * p ; s = new node ; cin s-data ; hea
61、d = NULL ; while ( s-data != 0 ) if ( head = NULL ) head = s ; else p-next = s ; p = s ; s = new node ; cin s-data ; p - next = NULL ; delete s ; return ( head ) ;向鏈表插入新結(jié)點5 . 3 5 . 3 鏈 表第63頁/共321頁建立鏈表的過程:生成頭結(jié)點;while(未結(jié)束) 生成新結(jié)點; 把新結(jié)點插入鏈表;struct node int data ; node * next ; ; node * head ; node * CreateList() node * s, * p ; s = new node ; cin s-data ; head = NULL ; while ( s-data != 0 ) if ( head = NULL ) head = s ; else p-next = s ; p = s ; s = new node ; cin s-data ; p - next = N
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)項目設(shè)計合同模板
- 2024藥品采購合同
- 工業(yè)用油購銷合同
- 2024年度高鐵站場CFG樁基礎(chǔ)施工合同
- 2024年圖書館公共衛(wèi)生間改造升級合同
- 商鋪定金租賃合同樣本
- 擔保合同書寫格式
- 2024總價合同和可調(diào)價合同簡介
- 2024股權(quán)融資協(xié)議書樣本
- 2024簽購房合同需要什么
- 2024年廣東省公務(wù)員錄用考試《行測》試題及答案解析
- 黑龍江省 哈爾濱市第四十七中學校2024-2025學年七年級上學期期中考試語文試題
- 期中(1-4單元)(試題)-2024-2025學年六年級數(shù)學上冊西師大版
- 《烏魯木齊市國土空間總體規(guī)劃(2021-2035年)》
- 河南省城市生命線安全工程建設(shè)指引V1
- 生涯發(fā)展展示
- 報價單(報價單模板)
- 北京電影學院ppt講義.doc
- 亂世巨星諧音歌詞.
- 硬筆書法練習米字格田字格(A4紙)word打印版
- 高溫合金PPT課件
評論
0/150
提交評論