大學(xué)C語言第9章結(jié)構(gòu)體類型ppt課件_第1頁
大學(xué)C語言第9章結(jié)構(gòu)體類型ppt課件_第2頁
大學(xué)C語言第9章結(jié)構(gòu)體類型ppt課件_第3頁
大學(xué)C語言第9章結(jié)構(gòu)體類型ppt課件_第4頁
大學(xué)C語言第9章結(jié)構(gòu)體類型ppt課件_第5頁
已閱讀5頁,還剩143頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、9.1 定義和使用結(jié)構(gòu)體變量定義和使用結(jié)構(gòu)體變量9.2 使用結(jié)構(gòu)體數(shù)組使用結(jié)構(gòu)體數(shù)組9.3 結(jié)構(gòu)體指針結(jié)構(gòu)體指針9.4 用指針處理鏈表用指針處理鏈表9.5 共用體類型共用體類型9.6 使用枚舉類型使用枚舉類型9.7 用用typedef聲明新類型名聲明新類型名P2939.1.1 自己建立結(jié)構(gòu)體類型自己建立結(jié)構(gòu)體類型9.1.2 定義結(jié)構(gòu)體類型變量定義結(jié)構(gòu)體類型變量9.1.3 結(jié)構(gòu)體變量的初始化和引用結(jié)構(gòu)體變量的初始化和引用P293用戶自己建立由不同類型數(shù)據(jù)組成的組用戶自己建立由不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu),它稱為結(jié)構(gòu)體合型的數(shù)據(jù)結(jié)構(gòu),它稱為結(jié)構(gòu)體例如,一個(gè)學(xué)生的學(xué)號、姓名、性別、例如,一個(gè)學(xué)

2、生的學(xué)號、姓名、性別、年齡、成果、家庭地址等項(xiàng),是屬于同年齡、成果、家庭地址等項(xiàng),是屬于同一個(gè)學(xué)生的,因此組成一個(gè)組合數(shù)據(jù),一個(gè)學(xué)生的,因此組成一個(gè)組合數(shù)據(jù),如如student_1的變量,反映它們之間的的變量,反映它們之間的內(nèi)在聯(lián)系內(nèi)在聯(lián)系P293struct Student /定義類型定義類型 int num; char name20; char sex; int age; float score; char addr30; ;struct Student a,b; /定義變量定義變量u由程序設(shè)計(jì)者指定了由程序設(shè)計(jì)者指定了一個(gè)結(jié)構(gòu)體類型一個(gè)結(jié)構(gòu)體類型struct Studentu它包括它包括

3、num,name,sex,age,score,addr等不同類等不同類型的成員型的成員類型名,類似類型名,類似intP293下下聲明一個(gè)結(jié)構(gòu)體類型的一般形式為:聲明一個(gè)結(jié)構(gòu)體類型的一般形式為: struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員表列成員表列 ; 類型名類型名 成員名成員名;留意:結(jié)構(gòu)體類型名,前面一定有留意:結(jié)構(gòu)體類型名,前面一定有struct例如:例如: struct Student 習(xí)慣上,首字母大寫習(xí)慣上,首字母大寫P294黑體黑體字字闡明:闡明:(1)結(jié)構(gòu)體類型并非只有一種,而是可以設(shè)計(jì)結(jié)構(gòu)體類型并非只有一種,而是可以設(shè)計(jì)出許多種結(jié)構(gòu)體類型,例如:出許多種結(jié)構(gòu)體類型,例如:struc

4、t Teacherstruct Workerstruct Datestruct Student1等結(jié)構(gòu)體類型等結(jié)構(gòu)體類型各自包含不同的成員各自包含不同的成員前面只是建立了一個(gè)結(jié)構(gòu)體類型,它相當(dāng)于一前面只是建立了一個(gè)結(jié)構(gòu)體類型,它相當(dāng)于一個(gè)模型,并沒有定義變量,其中并無具體數(shù)據(jù)個(gè)模型,并沒有定義變量,其中并無具體數(shù)據(jù),系統(tǒng)對之也不分配存儲單元。,系統(tǒng)對之也不分配存儲單元。相當(dāng)于設(shè)計(jì)好了圖紙,但并未建成具體的房屋相當(dāng)于設(shè)計(jì)好了圖紙,但并未建成具體的房屋。為了能在程序中使用結(jié)構(gòu)體類型的數(shù)據(jù),應(yīng)。為了能在程序中使用結(jié)構(gòu)體類型的數(shù)據(jù),應(yīng)當(dāng)定義結(jié)構(gòu)體類型的變量,并在其中存放具體當(dāng)定義結(jié)構(gòu)體類型的變量,并在

5、其中存放具體的數(shù)據(jù)。的數(shù)據(jù)。P295方式方式1. 先聲明結(jié)構(gòu)體類型,再定義該類型先聲明結(jié)構(gòu)體類型,再定義該類型變量變量聲明結(jié)構(gòu)體類型聲明結(jié)構(gòu)體類型struct Student,可以,可以用它來定義變量用它來定義變量 struct Student student1,student2;類型名類型名變量名變量名 P295方式方式1. 先聲明結(jié)構(gòu)體類型,再定義該類型變量先聲明結(jié)構(gòu)體類型,再定義該類型變量10001Zhang XinM 1990.5Shanghaistudent110002Wang LiF2098Beijingstudent2P295int num; char name20;sex; a

6、ge; score; addr30;方式方式2. 在聲明類型的同時(shí)定義變量在聲明類型的同時(shí)定義變量struct Student int num; char name20; char sex; int age; float score; char addr30; student1,student2;P295定義類型定義類型定義變量定義變量類型名類型名方式方式3. 不指定類型名而直接定義結(jié)構(gòu)體類型不指定類型名而直接定義結(jié)構(gòu)體類型變量變量用得不多用得不多 P296中下中下其一般形式為其一般形式為: struct 成員表列成員表列 變量名表列變量名表列; 不能再用此結(jié)構(gòu)類型,定義其它變量不能再用此結(jié)構(gòu)

7、類型,定義其它變量 。P296(1) 結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是不同的概結(jié)構(gòu)體類型與結(jié)構(gòu)體變量是不同的概念,不要混同。只能對變量賦值、存取念,不要混同。只能對變量賦值、存取或運(yùn)算,而不能對一個(gè)類型賦值、存取或運(yùn)算,而不能對一個(gè)類型賦值、存取或運(yùn)算。在編譯時(shí),對類型是不分配空或運(yùn)算。在編譯時(shí),對類型是不分配空間的,只對變量分配空間。間的,只對變量分配空間。參考:人類類型),周杰倫變量)參考:人類類型),周杰倫變量)P296下下“闡明闡明”(2) 結(jié)構(gòu)體類型中的成員名可以與程序中的結(jié)構(gòu)體類型中的成員名可以與程序中的變量名相同,但二者不代表同一對象。變量名相同,但二者不代表同一對象。(3) 對結(jié)構(gòu)體變

8、量中的成員即對結(jié)構(gòu)體變量中的成員即“域域”),可),可以單獨(dú)使用,它的作用與地位相當(dāng)于普通變以單獨(dú)使用,它的作用與地位相當(dāng)于普通變量。量。例:例:struct Student s1,s2,s3;/定義定義 strcpy(,”周杰倫周杰倫”);/賦值賦值P296下下“闡明闡明” 例例9.1 把一個(gè)學(xué)生的信息把一個(gè)學(xué)生的信息(包括學(xué)號、姓名、性包括學(xué)號、姓名、性別、住址別、住址)放在一個(gè)結(jié)構(gòu)體變量中,然后輸出這放在一個(gè)結(jié)構(gòu)體變量中,然后輸出這個(gè)學(xué)生的信息。個(gè)學(xué)生的信息。解題思路:解題思路:自己建立一個(gè)結(jié)構(gòu)體類型,包括有關(guān)學(xué)生信息的各自己建立一個(gè)結(jié)構(gòu)體類型,包括有關(guān)學(xué)生信息的各成員成員

9、用它定義結(jié)構(gòu)體變量,同時(shí)賦以初值用它定義結(jié)構(gòu)體變量,同時(shí)賦以初值輸出該結(jié)構(gòu)體變量的各成員輸出該結(jié)構(gòu)體變量的各成員P297#include int main()struct Student long int num; char name20; char sex; char addr20; a=10101,“Li Lin”,M, “123 Beijing Road”; printf(NO.:%ldnname:%sn sex:%cnaddress:%sn, a.num,,a.sex,a.addr); return 0; P297#include int main()struct Stud

10、ent long int num; char name20; char sex; char addr20; a=10101,“Li Lin”,M, “123 Beijing Road”; printf(NO.:%ldnname:%sn sex:%cnaddress:%sn, a.num,,a.sex,a.addr); return 0; 給成員賦初值給成員賦初值P298#include int main()struct Student long int num; char name20; char sex; char addr20; a=10101,“Li Lin”,M, “123

11、 Beijing Road”; a.num=10010; 對對printf(“%sn”,a); 不對不對不能使用整個(gè)變量,不能使用整個(gè)變量,只能使用單個(gè)成員只能使用單個(gè)成員P297#include int main()struct Student long int num; char name20; char sex; char addr20; a=10101,“Li Lin”,M, “123 Beijing Road”; b=a; 對對struct Student b;b.num+; 對對留意:同結(jié)構(gòu)類型變量可以直接賦值留意:同結(jié)構(gòu)類型變量可以直接賦值 例例9.2 輸入兩個(gè)學(xué)生的學(xué)號、姓名和

12、成績輸入兩個(gè)學(xué)生的學(xué)號、姓名和成績,輸出成績較高學(xué)生的學(xué)號、姓名和成績,輸出成績較高學(xué)生的學(xué)號、姓名和成績解題思路:解題思路:(1)定義兩個(gè)結(jié)構(gòu)相同的結(jié)構(gòu)體變量定義兩個(gè)結(jié)構(gòu)相同的結(jié)構(gòu)體變量student1和和student2;(2)分別輸入兩個(gè)學(xué)生的學(xué)號、姓名和成績分別輸入兩個(gè)學(xué)生的學(xué)號、姓名和成績;(3)比較兩個(gè)學(xué)生的成績,如果學(xué)生比較兩個(gè)學(xué)生的成績,如果學(xué)生1的成績的成績高于學(xué)生高于學(xué)生2,就輸出學(xué)生,就輸出學(xué)生1的全部信息,如的全部信息,如果學(xué)生果學(xué)生2的成績高于學(xué)生的成績高于學(xué)生1,就輸出學(xué)生,就輸出學(xué)生2的全部信息。如果二者相等,輸出的全部信息。如果二者相等,輸出2個(gè)學(xué)個(gè)學(xué)生的全部信

13、息生的全部信息P299講講#include int main() struct Student int num; char name20; float score; student1,student2; scanf(%d%s%f,&student1.num, , &student1.score); scanf(“%d%s%f”,&student2.num, , &student2.score); 不能加不能加&P297因?yàn)橐驗(yàn)閚ame是數(shù)組名是數(shù)組名 printf(The higher score is

14、:n); if (student1.scorestudent2.score) printf(%d %s %6.2fn,student1.num, , student1.score); else if (student1.scorestudent2.score) printf(%d %s %6.2fn,student2.num, , student2.score); else printf(%d %s %6.2fn,student1.num, , student1.score); printf(%d %s %6.2fn

15、,student2.num, , student2.score); return 0;9.2.1定義結(jié)構(gòu)體數(shù)組定義結(jié)構(gòu)體數(shù)組9.2.2 結(jié)構(gòu)體數(shù)組的應(yīng)用舉例結(jié)構(gòu)體數(shù)組的應(yīng)用舉例P300 例例9.3 有有3個(gè)候選人,每個(gè)選民只能個(gè)候選人,每個(gè)選民只能投票選一人,要求編一個(gè)統(tǒng)計(jì)選票的投票選一人,要求編一個(gè)統(tǒng)計(jì)選票的程序,先后輸入被選人的名字,最后程序,先后輸入被選人的名字,最后輸出各人得票結(jié)果。輸出各人得票結(jié)果。P300解題思路:解題思路:設(shè)一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組中包含設(shè)一個(gè)結(jié)構(gòu)體數(shù)組,數(shù)組中包含3個(gè)元個(gè)元素素每個(gè)元素中的信息應(yīng)包括候選人的姓名每個(gè)元素中的信息應(yīng)包括候選人的

16、姓名(字符型字符型)和得票數(shù)和得票數(shù)(整型整型)輸入被選人的姓名,然后與數(shù)組元素中輸入被選人的姓名,然后與數(shù)組元素中的的“姓名成員比較,如果相同,就給姓名成員比較,如果相同,就給這個(gè)元素中的這個(gè)元素中的“得票數(shù)成員的值加得票數(shù)成員的值加1輸出所有元素的信息輸出所有元素的信息P300#include #include struct Person char name20; int count; leader3=“Li”,0,“Zhang”,0,“Sun”,0; 全局的結(jié)構(gòu)體數(shù)組全局的結(jié)構(gòu)體數(shù)組name countleader0Li0Zhang0Sun0P300int main() int i,j;

17、 char leader_name20; for (i=1;i=10;i+) scanf(“%s”,leader_name); for(j=0;j3;j+) if(strcmp(leader_name, )=0) leaderj.count+; for(i=0;i3;i+) printf(%5s:%dn“,, leaderi.count); return 0;leaderj.count=leaderj.count+1;P300int main() int i,j; char leader_name20; for (i=1;i=10;i+) sca

18、nf(“%s”,leader_name); for(j=0;j3;j+) if(strcmp(leader_name, )=0) leaderj.count+; for(i=0;i3;i+) printf(%5s:%dn“,, leaderi.count); return 0;闡明:闡明:(1)定義結(jié)構(gòu)體數(shù)組一般形式是定義結(jié)構(gòu)體數(shù)組一般形式是 struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員表列成員表列 數(shù)組名數(shù)組名數(shù)組長度數(shù)組長度; 先聲明一個(gè)結(jié)構(gòu)體類型,然后再用此類先聲明一個(gè)結(jié)構(gòu)體類型,然后再用此類型定義結(jié)構(gòu)體數(shù)組:型定義結(jié)構(gòu)體數(shù)組: 結(jié)構(gòu)體類型結(jié)構(gòu)體類

19、型 數(shù)組名數(shù)組名數(shù)組長度數(shù)組長度; 如:如: struct Person leader3; P300闡明:闡明:(2)對結(jié)構(gòu)體數(shù)組初始化的形式是在定義對結(jié)構(gòu)體數(shù)組初始化的形式是在定義數(shù)組的后面加上:數(shù)組的后面加上:初值表列初值表列; 如:如:struct Person leader3= Li,0,Zhang,0,Fun,0; P300下下課堂練習(xí)課堂練習(xí)參考參考P302程序程序已有如下結(jié)構(gòu)類型定義:學(xué)生已有如下結(jié)構(gòu)類型定義:學(xué)生(學(xué)號,姓名,得分學(xué)號,姓名,得分)struct Student int num; char name20; float score; 1.寫主函數(shù),定義該類型數(shù)組寫主

20、函數(shù),定義該類型數(shù)組a有三個(gè)元素,按參考有三個(gè)元素,按參考程序賦值前三個(gè)元素初值;程序賦值前三個(gè)元素初值;2.重新輸入三人成績,輸入前先提示學(xué)號與姓名;重新輸入三人成績,輸入前先提示學(xué)號與姓名;3.把第二、三個(gè)學(xué)生數(shù)據(jù)交換;把第二、三個(gè)學(xué)生數(shù)據(jù)交換;3.求平均成績;求平均成績;5.輸出平均成績。輸出平均成績。 例例9.4 有有n個(gè)學(xué)生的信息個(gè)學(xué)生的信息(包括學(xué)號、包括學(xué)號、姓名、成果姓名、成果),要求按照成績的高低順,要求按照成績的高低順序輸出各學(xué)生的信息。序輸出各學(xué)生的信息。解題思路:用結(jié)構(gòu)體數(shù)組存放解題思路:用結(jié)構(gòu)體數(shù)組存放n個(gè)學(xué)生信個(gè)學(xué)生信息,采用選擇法對各元素進(jìn)行排序息,采用選擇法對各

21、元素進(jìn)行排序(進(jìn)進(jìn)行比較的是各元素中的成績行比較的是各元素中的成績)。P301#include struct Student /全局類型,各函數(shù)可用!全局類型,各函數(shù)可用! int num; char name20; float score; ; int main() struct Student stu5=10101,Zhang,78 , 10103,Wang,98.5, 10106,Li, 86 , 10108,“Ling”, 73.5, 10110,“Fun”, 100 ; struct Student temp; const int n = 5 ; int i,j,k;常變量常變量若人

22、數(shù)變?yōu)槿羧藬?shù)變?yōu)?030P301#include struct Student int num; char name20; float score; ; int main() struct Student stu5=10101,Zhang,78 , 10103,Wang,98.5, 10106,Li, 86 , 10108,“Ling”, 73.5, 10110,“Fun”, 100 ; struct Student temp; const int n = 5 ; int i,j,k;#define N 5注意注意temp的類型的類型P301 printf(The order is:n); f

23、or(i=0;in-1;i+) k=i; for(j=i+1;jstuk.score) k=j; temp=stuk; stuk=stui; stui=temp; for(i=0;in;i+) printf(%6d %8s %6.2fn, stui.num,,stui.score); printf(n); return 0;寫法上與普通變量一致寫法上與普通變量一致作業(yè)、復(fù)習(xí)、預(yù)習(xí)作業(yè)、復(fù)習(xí)、預(yù)習(xí)作業(yè)本作業(yè)本寫主函數(shù),聲明如下結(jié)構(gòu)類型:寫主函數(shù),聲明如下結(jié)構(gòu)類型:struct Productchar code50; float price;定義該類型數(shù)組定義該類型數(shù)組prod四

24、個(gè)元素;輸入四個(gè)元素;輸入4個(gè)產(chǎn)品個(gè)產(chǎn)品的數(shù)據(jù);用選擇法按價(jià)格升序排序;依序輸出的數(shù)據(jù);用選擇法按價(jià)格升序排序;依序輸出4個(gè)產(chǎn)品的數(shù)據(jù)。個(gè)產(chǎn)品的數(shù)據(jù)。主函數(shù):定義主函數(shù):定義int數(shù)組數(shù)組a有有10個(gè)元素,輸入個(gè)元素,輸入10個(gè)數(shù)個(gè)數(shù),用,用sort函數(shù)對函數(shù)對a升序排序,輸出這升序排序,輸出這10個(gè)數(shù)。個(gè)數(shù)。sort函數(shù):參數(shù)為函數(shù):參數(shù)為int數(shù)組數(shù)組arr和數(shù)組長度和數(shù)組長度n,用選擇法作,用選擇法作升序排序。升序排序。復(fù)習(xí):結(jié)構(gòu)類型的定義、結(jié)構(gòu)變量的初始化與引用復(fù)習(xí):結(jié)構(gòu)類型的定義、結(jié)構(gòu)變量的初始化與引用預(yù)習(xí):文件的輸入與輸出預(yù)習(xí):文件的輸入與輸出9.3.1 指向結(jié)構(gòu)體變量的指針指向結(jié)

25、構(gòu)體變量的指針9.3.2 指向結(jié)構(gòu)體數(shù)組的指針指向結(jié)構(gòu)體數(shù)組的指針9.3.3 用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指針作函數(shù)參數(shù)針作函數(shù)參數(shù)P303指向結(jié)構(gòu)體對象的指針變量既可以指向指向結(jié)構(gòu)體對象的指針變量既可以指向結(jié)構(gòu)體變量,也可以用來指向結(jié)構(gòu)體數(shù)結(jié)構(gòu)體變量,也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。組中的元素。指針變量的基類型必須與結(jié)構(gòu)體變量的指針變量的基類型必須與結(jié)構(gòu)體變量的類型相同。例如:類型相同。例如: struct Student *pt; P303 例例9.5 通過指向結(jié)構(gòu)體變量的指針變通過指向結(jié)構(gòu)體變量的指針變量輸出結(jié)構(gòu)體變量中成員的信息。量輸出結(jié)構(gòu)體變量中成員的信息

26、。解題思路:在已有的基礎(chǔ)上,本題要解解題思路:在已有的基礎(chǔ)上,本題要解決兩個(gè)問題:決兩個(gè)問題:怎樣對結(jié)構(gòu)體變量成員賦值;怎樣對結(jié)構(gòu)體變量成員賦值;怎樣通過指向結(jié)構(gòu)體變量的指針訪問結(jié)怎樣通過指向結(jié)構(gòu)體變量的指針訪問結(jié)構(gòu)體變量中成員。構(gòu)體變量中成員。P303#include #include int main() struct Student long num; char name20; char sex; float score; ;P303 struct Student stu_1; struct Student * p; p=&stu_1; stu_1.num=10101; strc

27、py(stu_1.name,“Li Lin”); stu_1.sex=M; stu_1.score=89.5; printf(No.:%ldn”,stu_1.num); printf(name:%sn,stu_1.name); printf(sex:%cn”,stu_1.sex); printf(”score:%5.1fn”,stu_1.score); return 0;stu_110101Li LinM89.5pP303下下 struct Student stu_1; struct Student * p; p=&stu_1; stu_1.num=10101; strcpy(stu_

28、1.name,“Li Lin”); stu_1.sex=M; stu_1.score=89.5; printf(No.:%ldn”,stu_1.num); printf(name:%sn,stu_1.name); printf(sex:%cn”,stu_1.sex); printf(”score:%5.1fn”,stu_1.score); return 0;stu_110101Li LinM89.5p(*p).num(*p).name(*p).sex(*p).score闡明:闡明:為了使用方便和直觀,為了使用方便和直觀,C語言允許把語言允許把(*p).num用用p-num來代替來代替(*p).

29、name等價(jià)于等價(jià)于p-name如果如果p指向一個(gè)結(jié)構(gòu)體變量指向一個(gè)結(jié)構(gòu)體變量stu,以下等價(jià),以下等價(jià): stu.成員名成員名(如如stu.num) (*p).成員名如成員名如(*p).num) p-成員名成員名(如如p-num) 例例9.6 有有3個(gè)學(xué)生的信息,放在結(jié)構(gòu)體個(gè)學(xué)生的信息,放在結(jié)構(gòu)體數(shù)組中,要求輸出全部學(xué)生的信息。數(shù)組中,要求輸出全部學(xué)生的信息。P304解題思路:用指向結(jié)構(gòu)體變量的指針處理解題思路:用指向結(jié)構(gòu)體變量的指針處理(1)聲明聲明struct Student,并定義結(jié)構(gòu),并定義結(jié)構(gòu)體數(shù)組、初始化體數(shù)組、初始化(2)定義指向定義指向struct Student類型指針類型

30、指針p(3)使使p指向數(shù)組首元素,輸出元素中各指向數(shù)組首元素,輸出元素中各信息信息(4)使使p指向下一個(gè)元素,輸出元素中各指向下一個(gè)元素,輸出元素中各信息信息(5)再使再使p指向結(jié)構(gòu)體數(shù)組的下一個(gè)元素指向結(jié)構(gòu)體數(shù)組的下一個(gè)元素,輸出它指向的元素中的有關(guān)信息,輸出它指向的元素中的有關(guān)信息P305#include struct Student int num; char name20; char sex; int age;struct Student stu3= 10101,Li Lin,M,18, 10102,Zhang Fun,M,19, 10104,Wang Min,F,20 ;P305in

31、t main() struct Student *p; printf( No. Name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); return 0;10101Li LinM1810102Zhang FangM1910104Wang MinF20stu0stu1stu2int main() struct Student *p; printf( No. Name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); return 0;10101Li LinM1810102Zhang FangM

32、1910104Wang MinF20pstu0stu1stu2int main() struct Student *p; printf( No. Name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); return 0;10101Li LinM1810102Zhang FangM1910104Wang MinF20pstu0stu1stu2int main() struct Student *p; printf( No. Name sex agen); for(p=stu;pnum, p-name, p-sex, p-age); retur

33、n 0;10101Li LinM1810102Zhang FangM1910104Wang MinF20pstu0stu1stu2將一個(gè)結(jié)構(gòu)體變量的值傳遞給另一個(gè)函數(shù),有將一個(gè)結(jié)構(gòu)體變量的值傳遞給另一個(gè)函數(shù),有3種種方法。方法。(設(shè)設(shè) struct Student stu3;)(1) 用結(jié)構(gòu)體變量的成員作參數(shù):用結(jié)構(gòu)體變量的成員作參數(shù):fun(stu1.num)(2) 用結(jié)構(gòu)體變量作實(shí)參:用結(jié)構(gòu)體變量作實(shí)參:fun(stu2)(3)用指向結(jié)構(gòu)體變量或數(shù)組元素的指針作實(shí)參,用指向結(jié)構(gòu)體變量或數(shù)組元素的指針作實(shí)參,將結(jié)構(gòu)體變量或數(shù)組元素的地址傳給形參:將結(jié)構(gòu)體變量或數(shù)組元素的地址傳給形參:fun(

34、)方法方法(1) 用結(jié)構(gòu)體變量的成員作參數(shù)。用結(jié)構(gòu)體變量的成員作參數(shù)。P306 例如,用例如,用stu1.num或或作函數(shù)實(shí)參,將實(shí)參值傳給形參。作函數(shù)實(shí)參,將實(shí)參值傳給形參。用法和用普通變量作實(shí)參是一樣的,屬于用法和用普通變量作實(shí)參是一樣的,屬于“值值傳遞方式。傳遞方式。應(yīng)當(dāng)注意實(shí)參與形參的類型保持一致。應(yīng)當(dāng)注意實(shí)參與形參的類型保持一致。方法方法(2) 用結(jié)構(gòu)體變量作實(shí)參。用結(jié)構(gòu)體變量作實(shí)參。 P306用結(jié)構(gòu)體變量作實(shí)參時(shí),將結(jié)構(gòu)體變量所占用結(jié)構(gòu)體變量作實(shí)參時(shí),將結(jié)構(gòu)體變量所占的內(nèi)存單元的內(nèi)容全部按順序傳遞給形參的內(nèi)存單元的內(nèi)容全部按順序傳遞給形參,形參也必須是同類型的結(jié)構(gòu)

35、體變量,形參也必須是同類型的結(jié)構(gòu)體變量在函數(shù)調(diào)用期間形參也要占用內(nèi)存單元。這在函數(shù)調(diào)用期間形參也要占用內(nèi)存單元。這種傳遞方式在空間和時(shí)間上開銷較大種傳遞方式在空間和時(shí)間上開銷較大在被調(diào)用函數(shù)期間改變形參也是結(jié)構(gòu)體變在被調(diào)用函數(shù)期間改變形參也是結(jié)構(gòu)體變量的值,不能返回主調(diào)函數(shù)量的值,不能返回主調(diào)函數(shù)一般較少用這種方法一般較少用這種方法方法方法(3)用指向結(jié)構(gòu)體變量或數(shù)組元素用指向結(jié)構(gòu)體變量或數(shù)組元素的指針作實(shí)參,將結(jié)構(gòu)體變量或數(shù)的指針作實(shí)參,將結(jié)構(gòu)體變量或數(shù)組元素的地址傳給形參。組元素的地址傳給形參。 P306 例例9.7 有有n個(gè)結(jié)構(gòu)體變量,內(nèi)含學(xué)生學(xué)個(gè)結(jié)構(gòu)體變量,內(nèi)含學(xué)生學(xué)號、姓名和號、姓名

36、和3門課程的成績。要求輸出門課程的成績。要求輸出平均成績最高的學(xué)生的信息平均成績最高的學(xué)生的信息(包括學(xué)號包括學(xué)號、姓名、姓名、3門課程成績和平均成績門課程成績和平均成績)。解題思路:將解題思路:將n個(gè)學(xué)生的數(shù)據(jù)表示為結(jié)構(gòu)個(gè)學(xué)生的數(shù)據(jù)表示為結(jié)構(gòu)體數(shù)組。按照功能函數(shù)化的思想,分別用體數(shù)組。按照功能函數(shù)化的思想,分別用3個(gè)函數(shù)來實(shí)現(xiàn)不同的功能:個(gè)函數(shù)來實(shí)現(xiàn)不同的功能:用用input函數(shù)輸入數(shù)據(jù)和求各學(xué)生平均成函數(shù)輸入數(shù)據(jù)和求各學(xué)生平均成績績用用max函數(shù)找平均成績最高的學(xué)生函數(shù)找平均成績最高的學(xué)生用用print函數(shù)輸出成績最高學(xué)生的信息函數(shù)輸出成績最高學(xué)生的信息在主函數(shù)中先后調(diào)用這在主函數(shù)中先后調(diào)

37、用這3個(gè)函數(shù),用指向個(gè)函數(shù),用指向結(jié)構(gòu)體變量的指針作實(shí)參。最后得到結(jié)果結(jié)構(gòu)體變量的指針作實(shí)參。最后得到結(jié)果。本程序假設(shè)本程序假設(shè)n=3#include #define N 3struct Student int num; char name20; float score3; float aver; ;4個(gè)成員個(gè)成員輸入前輸入前3個(gè)成員值個(gè)成員值計(jì)算最后成員值計(jì)算最后成員值int main() void input(struct Student stu); struct Student max(struct Student stu); void print(struct Student stu)

38、; struct Student stuN,*p=stu; input(p); print(max(p); return 0;void input(struct Student stu) int i; printf(請輸入各學(xué)生的信息:請輸入各學(xué)生的信息: 學(xué)號、姓名、三門課成績學(xué)號、姓名、三門課成績:n); for(i=0;iN;i+) scanf(%d %s %f %f %f, &stui.num,, &stui.score0,&stui.score1, &stui.score2); stui.aver=(stui.score0+ stui

39、.score1+stui.score2)/3.0; 輸入第輸入第1個(gè)成員值個(gè)成員值 輸入第輸入第2個(gè)成員值個(gè)成員值輸入第輸入第3個(gè)成員值個(gè)成員值計(jì)算第計(jì)算第4個(gè)成員值個(gè)成員值stu0stu1stu2stu10101Li78 89 9888.33i=0void input(struct Student stu) int i; printf(請輸入各學(xué)生的信息:請輸入各學(xué)生的信息: 學(xué)號、姓名、三門課成績學(xué)號、姓名、三門課成績:n); for(i=0;iN;i+) scanf(%d %s %f %f %f, &stui.num,, &stui.score0,&am

40、p;stui.score1, &stui.score2); stui.aver=(stui.score0+ stui.score1+stui.score2)/3.0; 輸入第輸入第1個(gè)成員值個(gè)成員值 輸入第輸入第2個(gè)成員值個(gè)成員值輸入第輸入第3個(gè)成員值個(gè)成員值計(jì)算第計(jì)算第4個(gè)成員值個(gè)成員值stu0stu1stu2stu10101Li78 89 9888.3310103Wang98.5 87 6984.83i=1void input(struct Student stu) int i; printf(請輸入各學(xué)生的信息:請輸入各學(xué)生的信息: 學(xué)號、姓名、三門課成績學(xué)號、姓名、三門課成績:

41、n); for(i=0;iN;i+) scanf(%d %s %f %f %f, &stui.num,, &stui.score0,&stui.score1, &stui.score2); stui.aver=(stui.score0+ stui.score1+stui.score2)/3.0; 輸入第輸入第1個(gè)成員值個(gè)成員值 輸入第輸入第2個(gè)成員值個(gè)成員值輸入第輸入第3個(gè)成員值個(gè)成員值計(jì)算第計(jì)算第4個(gè)成員值個(gè)成員值stu0stu1stu2stu10101Li78 89 9888.3310103Wang98.5 87 6984.8310106S

42、un 88 76.5 8984.5i=2struct Student max(struct Student stu) int i,m=0; for(i=0;istum.aver) m=i; return stum; stu0stu1stu2stu10101Li78 89 9888.3310103Wang98.5 87 6984.8310106Sun 88 76.5 8984.5最大最大前往前往void print(struct Student stud) printf(n成績最高的學(xué)生是成績最高的學(xué)生是:n);printf(學(xué)號學(xué)號:%dn姓名姓名:%sn 三門課成績?nèi)T課成績:%5.1f,%

43、5.1f,%5.1fn 平均成績平均成績:%6.2fn”, stud.num, ,stud.score0, stud.score1,stud.score2,stud.aver); stud10101Li78 89 9888.3310103Wang98.5 87 6984.8310106Sun 88 76.5 8984.5num namescoreaverstu0stu1stu2以上以上3個(gè)函數(shù)的調(diào)用,情況各不相同:個(gè)函數(shù)的調(diào)用,情況各不相同:調(diào)用調(diào)用input函數(shù)時(shí),實(shí)參是指針變量,形函數(shù)時(shí),實(shí)參是指針變量,形參是結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體元素的參是結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體

44、元素的地址,函數(shù)無返回值。地址,函數(shù)無返回值。調(diào)用調(diào)用max函數(shù)時(shí),實(shí)參是指針變量,形參函數(shù)時(shí),實(shí)參是指針變量,形參是結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體元素的地是結(jié)構(gòu)體數(shù)組,傳遞的是結(jié)構(gòu)體元素的地址,函數(shù)的返回值是結(jié)構(gòu)體類型數(shù)據(jù)。址,函數(shù)的返回值是結(jié)構(gòu)體類型數(shù)據(jù)。調(diào)用調(diào)用print函數(shù)時(shí),實(shí)參是結(jié)構(gòu)體變量,函數(shù)時(shí),實(shí)參是結(jié)構(gòu)體變量,形參是結(jié)構(gòu)體變量,傳遞的是結(jié)構(gòu)體變量形參是結(jié)構(gòu)體變量,傳遞的是結(jié)構(gòu)體變量中各成員的值,函數(shù)無返回值。中各成員的值,函數(shù)無返回值。9.4.1 什么是鏈表什么是鏈表9.4.2 建立簡單的靜態(tài)鏈表建立簡單的靜態(tài)鏈表9.4.3 建立動態(tài)鏈表建立動態(tài)鏈表9.4.4 輸出鏈表輸出鏈表鏈

45、表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)它是動態(tài)地進(jìn)行存儲分配的一種結(jié)構(gòu)它是動態(tài)地進(jìn)行存儲分配的一種結(jié)構(gòu)head12491249A135613561475B1475C10211021D0頭指針頭指針各結(jié)點(diǎn)地址不連續(xù)各結(jié)點(diǎn)地址不連續(xù)各結(jié)點(diǎn)含有兩個(gè)部分各結(jié)點(diǎn)含有兩個(gè)部分表尾表尾鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)它是動態(tài)地進(jìn)行存儲分配的一種結(jié)構(gòu)它是動態(tài)地進(jìn)行存儲分配的一種結(jié)構(gòu)鏈表必須利用指針變量才能實(shí)現(xiàn)鏈表必須利用指針變量才能實(shí)現(xiàn)struct Student int num; float score; struct Student *next; a,b,c

46、;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)a.next=&b;b.next=&c;numscorenext 例例9.8 建立一個(gè)如圖所示的簡單鏈表建立一個(gè)如圖所示的簡單鏈表,它由,它由3個(gè)學(xué)生數(shù)據(jù)的結(jié)點(diǎn)組成,要求個(gè)學(xué)生數(shù)據(jù)的結(jié)點(diǎn)組成,要求輸出各結(jié)點(diǎn)中的數(shù)據(jù)。輸出各結(jié)點(diǎn)中的數(shù)據(jù)。1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenext解題思路:解題思路:1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadhead=&a;a.next=&a

47、mp;b;b.next=&c;NULLc.next=NULL;#include struct Student int num; float score; struct Student *next;int main() struct Student a,b,c,*head,*p; a. num=10101; a.score=89.5; b. num=10103; b.score=90; c. num=10107; c.score=85; head=&a; a.next=&b; b.next=&c; c.next=NULL; p=head; do printf(“%

48、ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); return 0; p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); return 0;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadNULLp相當(dāng)于相當(dāng)于p=&b; p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); return 0;1

49、010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadNULLp相當(dāng)于相當(dāng)于p=&b; p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); return 0;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadNULLp相當(dāng)于相當(dāng)于p=&c; p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL)

50、; return 0;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadNULLp相當(dāng)于相當(dāng)于p=&c; p=head; do printf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL); return 0;1010189.510103901010785a結(jié)點(diǎn)結(jié)點(diǎn)b結(jié)點(diǎn)結(jié)點(diǎn)c結(jié)點(diǎn)結(jié)點(diǎn)numscorenextheadNULLp相當(dāng)于相當(dāng)于p=NULL;靜態(tài)鏈表靜態(tài)鏈表所謂建立動態(tài)鏈表是指在程序執(zhí)行過所謂建立動態(tài)鏈表是指在程序執(zhí)行過程中從無到有地建立起一個(gè)鏈表,即程中從無到

51、有地建立起一個(gè)鏈表,即一個(gè)一個(gè)地開辟結(jié)點(diǎn)和輸入各結(jié)點(diǎn)數(shù)一個(gè)一個(gè)地開辟結(jié)點(diǎn)和輸入各結(jié)點(diǎn)數(shù)據(jù),并建立起前后相鏈的關(guān)系。據(jù),并建立起前后相鏈的關(guān)系。 例例9.9 寫一函數(shù)建立一個(gè)有寫一函數(shù)建立一個(gè)有3名學(xué)生數(shù)名學(xué)生數(shù)據(jù)的單向動態(tài)鏈表。據(jù)的單向動態(tài)鏈表。解題思路:解題思路:定義定義3個(gè)指針變量:個(gè)指針變量:head,p1和和p2,它們,它們都是用來指向都是用來指向struct Student類型數(shù)據(jù)類型數(shù)據(jù)struct Student *head,*p1,*p2;解題思路:解題思路:用用malloc函數(shù)開辟第一個(gè)結(jié)點(diǎn),并使函數(shù)開辟第一個(gè)結(jié)點(diǎn),并使p1和和p2指向它指向它p1p1=p2=(struct

52、Student*)malloc(LEN);p2解題思路:解題思路:讀入一個(gè)學(xué)生的數(shù)據(jù)給讀入一個(gè)學(xué)生的數(shù)據(jù)給p1所指的第一個(gè)結(jié)所指的第一個(gè)結(jié)點(diǎn)點(diǎn)p1scanf(%ld,%f,&p1-num,&p1-score);p21010189.5解題思路:解題思路:讀入一個(gè)學(xué)生的數(shù)據(jù)給讀入一個(gè)學(xué)生的數(shù)據(jù)給p1所指的第一個(gè)結(jié)所指的第一個(gè)結(jié)點(diǎn)點(diǎn)使使head也指向新開辟的結(jié)點(diǎn)也指向新開辟的結(jié)點(diǎn)headp1p2scanf(%ld,%f,&p1-num,&p1-score);1010189.5解題思路:解題思路:再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸指向它,接著輸入

53、該結(jié)點(diǎn)的數(shù)據(jù)入該結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.5解題思路:解題思路:再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)入該結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.5p1=(struct Student*)malloc(LEN);scanf(%ld,%f,&p1-num,&p1-score);1010390解題思路:解題思路:使第一個(gè)結(jié)點(diǎn)的使第一個(gè)結(jié)點(diǎn)的next成員指向第二個(gè)結(jié)點(diǎn)成員指向第二個(gè)結(jié)點(diǎn),即連接第一個(gè)結(jié)點(diǎn)與第二個(gè)結(jié)點(diǎn),即連接第一個(gè)結(jié)點(diǎn)與第二個(gè)結(jié)點(diǎn)使使p2指向剛才建立的結(jié)點(diǎn)指向剛才建立的結(jié)點(diǎn)headp1p21010189.

54、5p2-next=p1;1010390解題思路:解題思路:使第一個(gè)結(jié)點(diǎn)的使第一個(gè)結(jié)點(diǎn)的next成員指向第二個(gè)結(jié)點(diǎn)成員指向第二個(gè)結(jié)點(diǎn),即連接第一個(gè)結(jié)點(diǎn)與第二個(gè)結(jié)點(diǎn),即連接第一個(gè)結(jié)點(diǎn)與第二個(gè)結(jié)點(diǎn)使使p2指向剛才建立的結(jié)點(diǎn)指向剛才建立的結(jié)點(diǎn)headp1p21010189.5p2-next=p1;1010390p2=p1;解題思路:解題思路:再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)入該結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.51010390解題思路:解題思路:再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)入該結(jié)點(diǎn)的

55、數(shù)據(jù)headp1p21010189.51010390p1=(struct Student*)malloc(LEN);scanf(%ld,%f,&p1-num,&p1-score);1010785解題思路:解題思路:使第二個(gè)結(jié)點(diǎn)的使第二個(gè)結(jié)點(diǎn)的next成員指向第三個(gè)結(jié)點(diǎn)成員指向第三個(gè)結(jié)點(diǎn),即連接第二個(gè)結(jié)點(diǎn)與第三個(gè)結(jié)點(diǎn),即連接第二個(gè)結(jié)點(diǎn)與第三個(gè)結(jié)點(diǎn)使使p2指向剛才建立的結(jié)點(diǎn)指向剛才建立的結(jié)點(diǎn)headp1p21010189.510103901010785p2-next=p1;解題思路:解題思路:使第二個(gè)結(jié)點(diǎn)的使第二個(gè)結(jié)點(diǎn)的next成員指向第三個(gè)結(jié)點(diǎn)成員指向第三個(gè)結(jié)點(diǎn),即連接第二個(gè)結(jié)點(diǎn)

56、與第三個(gè)結(jié)點(diǎn),即連接第二個(gè)結(jié)點(diǎn)與第三個(gè)結(jié)點(diǎn)使使p2指向剛才建立的結(jié)點(diǎn)指向剛才建立的結(jié)點(diǎn)headp1p21010189.510103901010785p2-next=p1;p2=p1;解題思路:解題思路:再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)入該結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.5101039010107850解題思路:解題思路:再開辟另一個(gè)結(jié)點(diǎn)并使再開辟另一個(gè)結(jié)點(diǎn)并使p1指向它,接著輸指向它,接著輸入該結(jié)點(diǎn)的數(shù)據(jù)入該結(jié)點(diǎn)的數(shù)據(jù)headp1p21010189.5101039010107850p1=(struct Student*)mallo

57、c(LEN);scanf(%ld,%f,&p1-num,&p1-score);解題思路:解題思路:輸入的學(xué)號為輸入的學(xué)號為0,表示建立鏈表的過程完成,表示建立鏈表的過程完成,該結(jié)點(diǎn)不應(yīng)連接到鏈表中,該結(jié)點(diǎn)不應(yīng)連接到鏈表中headp1p21010189.5101039010107850NULLp2-next=NULL;#include #include #define LEN sizeof(struct Student)struct Student long num; float score; struct Student *next;int n;struct Student類型

58、數(shù)據(jù)的長度類型數(shù)據(jù)的長度struct Student *creat(void) struct Student *head,*p1,*p2; n=0; p1=p2=( struct Student*) malloc(LEN); scanf(“%ld,%f”,&p1-num,&p1-score); head=NULL; while(p1-num!=0) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(struct Student*)malloc(LEN); scanf(“%ld,%f”,&p1-num,&p1-

59、score); p2-next=NULL; return(head);p1總是開辟新結(jié)點(diǎn)總是開辟新結(jié)點(diǎn)p2總是指向最后結(jié)點(diǎn)總是指向最后結(jié)點(diǎn)用用p2和和p1連接兩個(gè)結(jié)點(diǎn)連接兩個(gè)結(jié)點(diǎn)int main() struct Student *pt; pt=creat(); printf(“nnum:%ldnscore:%5.1fn”, pt-num,pt-score); return 0;例例9.10 編寫一個(gè)輸出鏈表的函數(shù)編寫一個(gè)輸出鏈表的函數(shù)print。100167.5100387100599NULLp解題思路:解題思路:輸出輸出p所指的結(jié)點(diǎn)所指的結(jié)點(diǎn)使使p后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)p100167.5

60、100387100599NULLprintf(%ld %5.1fn,p-num,p-score);100167.5100387100599NULLp=p-next;解題思路:解題思路:輸出輸出p所指的結(jié)點(diǎn)所指的結(jié)點(diǎn)使使p后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)printf(%ld %5.1fn,p-num,p-score);p100167.5100387100599NULL解題思路:解題思路:輸出輸出p所指的新結(jié)點(diǎn)所指的新結(jié)點(diǎn)使使p后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)printf(%ld %5.1fn,p-num,p-score);p100167.5100387100599NULLp=p-next;解題思路:解題思路:輸出輸出p所指的新結(jié)點(diǎn)所指的新結(jié)點(diǎn)使使p后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)printf(%ld %5.1fn,p-num,p-score);p100167.5100387100599NULLp=p-next;解題思路:解題思路:輸出輸出p所指的新結(jié)點(diǎn)所指的新結(jié)點(diǎn)使使p后移一個(gè)結(jié)點(diǎn)后移一個(gè)結(jié)點(diǎn)printf(%ld %5.1fn,p-nu

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論