C語(yǔ)言程序設(shè)計(jì)——結(jié)構(gòu)體和共用體(完整版)_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)——結(jié)構(gòu)體和共用體(完整版)_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)——結(jié)構(gòu)體和共用體(完整版)_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)——結(jié)構(gòu)體和共用體(完整版)_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)——結(jié)構(gòu)體和共用體(完整版)_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言程序設(shè)計(jì)結(jié)構(gòu)體和共用體(完整版)C語(yǔ)言程序設(shè)計(jì)結(jié)構(gòu)體和共用體(完整版)n問題:?jiǎn)栴}: 有時(shí)需要將不同類型的數(shù)據(jù)組合成一個(gè)有機(jī)的整體,以便于引用。如:如:一個(gè)學(xué)生有學(xué)號(hào)/姓名/性別/地址等屬性 int num; char name20; char sex; int age; int char addr30; 100101 Li Fun M 18 87.5 Beijing num name sex age score addr結(jié)構(gòu)是一種構(gòu)造數(shù)據(jù)類型結(jié)構(gòu)是一種構(gòu)造數(shù)據(jù)類型(“結(jié)構(gòu)結(jié)構(gòu)”是由若干個(gè)成員組成的是由若干個(gè)成員組成的),在使用之前必須先定義,然后才能用來定義相應(yīng)的結(jié)構(gòu),在使用之前必須先

2、定義,然后才能用來定義相應(yīng)的結(jié)構(gòu)體變量、結(jié)構(gòu)體數(shù)組、結(jié)構(gòu)體指針變量。體變量、結(jié)構(gòu)體數(shù)組、結(jié)構(gòu)體指針變量。結(jié)構(gòu)體類型一般形式:結(jié)構(gòu)體類型一般形式:struct 結(jié)構(gòu)體名結(jié)構(gòu)體名 成員列表成員列表 ;其中各成員都應(yīng)進(jìn)行類型說明,即其中各成員都應(yīng)進(jìn)行類型說明,即類型名類型名 成員名;成員名;例:例:struct student int num; char name20; char sex; int age; float score; char addr30; ;(1)先聲明結(jié)構(gòu)類型,再定義結(jié)構(gòu)體變量先聲明結(jié)構(gòu)類型,再定義結(jié)構(gòu)體變量例:例:struct student int num; char na

3、me20; float score; ; struct student stu1, stu2;(2)在聲明結(jié)構(gòu)類型的同時(shí)定義結(jié)構(gòu)體變量在聲明結(jié)構(gòu)類型的同時(shí)定義結(jié)構(gòu)體變量例:例:struct student int num; char name20; float score; stu1, stu2;(3)直接定義結(jié)構(gòu)體類型變量直接定義結(jié)構(gòu)體類型變量例:例:struct int num; char name20; float score; stu1, stu2; 一般對(duì)結(jié)構(gòu)體變量的使用,包括賦值、輸入、輸出一般對(duì)結(jié)構(gòu)體變量的使用,包括賦值、輸入、輸出、運(yùn)算等都是通過其成員來實(shí)現(xiàn)的。、運(yùn)算等都是通過

4、其成員來實(shí)現(xiàn)的。結(jié)構(gòu)體變量成員的表示方法:結(jié)構(gòu)體變量成員的表示方法:結(jié)構(gòu)體變量名結(jié)構(gòu)體變量名.成員名成員名例:例:stu1.num (學(xué)生學(xué)生1的學(xué)號(hào)的學(xué)號(hào)) stu1.score(學(xué)生學(xué)生1的分?jǐn)?shù)的分?jǐn)?shù)) 和其他類型變量一樣,定義結(jié)構(gòu)體變量的同時(shí),給它的成和其他類型變量一樣,定義結(jié)構(gòu)體變量的同時(shí),給它的成員賦初值。員賦初值。例:例:#include void main( ) struct student int num; char name20; float score; stu1=1301,”Zhang San”,82.50; printf(“No.%d,Name:%s,Score:%fn

5、”, stu1.num,,stu1.score); 通過輸入語(yǔ)句或賦值語(yǔ)句,實(shí)現(xiàn)對(duì)結(jié)構(gòu)體變量的成員賦通過輸入語(yǔ)句或賦值語(yǔ)句,實(shí)現(xiàn)對(duì)結(jié)構(gòu)體變量的成員賦值。值。例:例:#include void main( ) struct student int num; char name20; float score; stu1; stu1.num=1301; =”Zhang San”; scanf(“%f”,&stu1.score); printf(“No.%d,Name:%s,Score:%fn”, stu1.num,,stu1.score)

6、; 一個(gè)結(jié)構(gòu)體的成員又是一個(gè)結(jié)構(gòu)體。一個(gè)結(jié)構(gòu)體的成員又是一個(gè)結(jié)構(gòu)體。例:例: struct date struct student int month; int num; int day; char name20; int year; char sex; int age; struct date birthday; char addr30; ; birthdaynum name sex age addr month day year 結(jié)構(gòu)體數(shù)組的每一個(gè)元素都是具有相同結(jié)構(gòu)類型的結(jié)構(gòu)體結(jié)構(gòu)體數(shù)組的每一個(gè)元素都是具有相同結(jié)構(gòu)類型的結(jié)構(gòu)體變量。變量。例:例:struct student int nu

7、m; char name20; float score; stu3;其中,定義了一個(gè)結(jié)構(gòu)體數(shù)組其中,定義了一個(gè)結(jié)構(gòu)體數(shù)組stu,共有,共有3個(gè)元素,每個(gè)個(gè)元素,每個(gè)元素都具有元素都具有struct student的結(jié)構(gòu)形式。的結(jié)構(gòu)形式。例:例:struct student int num; char name20; float score; stu3=1301,”Zhang San”,57, 1302,“Li Si”,82.50,1303,“Wang Wu”,69;當(dāng)對(duì)全部元素進(jìn)行初始化賦值時(shí),也可以不給出長(zhǎng)度。當(dāng)對(duì)全部元素進(jìn)行初始化賦值時(shí),也可以不給出長(zhǎng)度。指向結(jié)構(gòu)體變量的指針指向結(jié)構(gòu)體變量

8、的指針一般形式為:一般形式為:struct 結(jié)構(gòu)名結(jié)構(gòu)名 *結(jié)構(gòu)體指針變量名;結(jié)構(gòu)體指針變量名; 例:例:struct student int num; char name20; float score; ; struct student *pstu;其中定義了一個(gè)指向其中定義了一個(gè)指向student的指針變量的指針變量pstu。指向結(jié)構(gòu)體變量的指針變量指向結(jié)構(gòu)體變量的指針變量用結(jié)構(gòu)體指針變量,訪問結(jié)構(gòu)體變量的各個(gè)成員用結(jié)構(gòu)體指針變量,訪問結(jié)構(gòu)體變量的各個(gè)成員,一般形一般形式為:式為:(*結(jié)構(gòu)體指針變量結(jié)構(gòu)體指針變量).成員名;成員名;或或 結(jié)構(gòu)體指針變量結(jié)構(gòu)體指針變量- 成員名;成員名; 例

9、:例: (*pstu).num 或或 pstu- num 例:例:#include void main( ) struct student int num; char name20; float score; stu1=1301,”Zhang San”,82.50,*pstu; pstu=&stu1; printf(“No.%d,Name:%s,Score:%fn”, stu1.num,,stu1.score); printf(“No.%d,Name:%s,Score:%fn”, (*pstu).num, (*pstu). name, (*pstu). score);

10、 printf(“No.%d,Name:%s,Score:%fn”, pstu-num, pstu- name, pstu- score);指向結(jié)構(gòu)體數(shù)組的指針變量指向結(jié)構(gòu)體數(shù)組的指針變量結(jié)構(gòu)體指針變量可指向一個(gè)結(jié)構(gòu)體數(shù)組,其指針變量的值是結(jié)構(gòu)體指針變量可指向一個(gè)結(jié)構(gòu)體數(shù)組,其指針變量的值是整個(gè)結(jié)構(gòu)體數(shù)組的首地址。整個(gè)結(jié)構(gòu)體數(shù)組的首地址。 例:例: 設(shè)設(shè)ps為指向結(jié)構(gòu)體數(shù)組的指針變量,為指向結(jié)構(gòu)體數(shù)組的指針變量,則則ps指向該結(jié)構(gòu)體數(shù)組的指向該結(jié)構(gòu)體數(shù)組的0號(hào)元素;號(hào)元素; ps+1指向該結(jié)構(gòu)體指向該結(jié)構(gòu)體數(shù)組的數(shù)組的1號(hào)元素。號(hào)元素。例:例:#include void main( ) str

11、uct student int num; char name20; float score; stu3=1301,”Zhang San”,57, 1302,“Li Si”,82.50,1303,“Wang Wu”,69; struct student *ps=stu; ps+; printf(“No.%d,Name:%s,Score:%fn”, ps-num, ps- name, ps- score); 1.用結(jié)構(gòu)體的單個(gè)成員作為函數(shù)參數(shù),向函數(shù)傳遞結(jié)用結(jié)構(gòu)體的單個(gè)成員作為函數(shù)參數(shù),向函數(shù)傳遞結(jié) 構(gòu)體的單個(gè)成員。構(gòu)體的單個(gè)成員。這與普通類型的變量作函數(shù)參數(shù)沒什么區(qū)別,都是傳值調(diào)用,這與普通類型

12、的變量作函數(shù)參數(shù)沒什么區(qū)別,都是傳值調(diào)用,在函數(shù)內(nèi)部對(duì)其進(jìn)行操作,不會(huì)引起實(shí)參結(jié)構(gòu)體成員值的變化在函數(shù)內(nèi)部對(duì)其進(jìn)行操作,不會(huì)引起實(shí)參結(jié)構(gòu)體成員值的變化。2.用結(jié)構(gòu)體變量作為函數(shù)參數(shù),向函數(shù)傳遞結(jié)構(gòu)體的用結(jié)構(gòu)體變量作為函數(shù)參數(shù),向函數(shù)傳遞結(jié)構(gòu)體的 完整結(jié)構(gòu)。完整結(jié)構(gòu)。這種傳遞,是將整個(gè)結(jié)構(gòu)體成員的內(nèi)容復(fù)制給被調(diào)函數(shù)這種傳遞,是將整個(gè)結(jié)構(gòu)體成員的內(nèi)容復(fù)制給被調(diào)函數(shù)。這種方式是傳值調(diào)用,在函數(shù)內(nèi)部對(duì)其進(jìn)行操作,不。這種方式是傳值調(diào)用,在函數(shù)內(nèi)部對(duì)其進(jìn)行操作,不會(huì)引起實(shí)參結(jié)構(gòu)體成員值的變化。會(huì)引起實(shí)參結(jié)構(gòu)體成員值的變化。3.用結(jié)構(gòu)體指針或結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù),向函數(shù)用結(jié)構(gòu)體指針或結(jié)構(gòu)體數(shù)組作為函數(shù)參

13、數(shù),向函數(shù) 傳遞結(jié)構(gòu)體的地址。傳遞結(jié)構(gòu)體的地址。由于是傳地址調(diào)用,在函數(shù)內(nèi)部對(duì)其進(jìn)行操作,將影響實(shí)參由于是傳地址調(diào)用,在函數(shù)內(nèi)部對(duì)其進(jìn)行操作,將影響實(shí)參結(jié)構(gòu)體成員值的變化。結(jié)構(gòu)體成員值的變化。 共用體共用體(也稱為聯(lián)合也稱為聯(lián)合)也是一種構(gòu)造的數(shù)據(jù)類型。也是一種構(gòu)造的數(shù)據(jù)類型。 共用體是將不同類型的數(shù)據(jù)組織在一起共同占用同一共用體是將不同類型的數(shù)據(jù)組織在一起共同占用同一段內(nèi)存的一種構(gòu)造數(shù)據(jù)類型。段內(nèi)存的一種構(gòu)造數(shù)據(jù)類型。例如,在校學(xué)生和教師都填寫以下表格:例如,在校學(xué)生和教師都填寫以下表格:姓名姓名 年齡年齡 職業(yè)職業(yè) 單位單位其中,職業(yè)分兩類:教師和學(xué)生;其中,職業(yè)分兩類:教師和學(xué)生; 而單

14、位一欄里,學(xué)生填寫班級(jí)編號(hào)而單位一欄里,學(xué)生填寫班級(jí)編號(hào)(整型類型整型類型),教師填寫教師填寫某系某教研室某系某教研室(整型類型整型類型) 。共用體與結(jié)構(gòu)體的類型聲明方法類似。共用體與結(jié)構(gòu)體的類型聲明方法類似。共用體的關(guān)鍵字為共用體的關(guān)鍵字為union。一般形式:一般形式:union 共用體名共用體名 成員列表成員列表 ;其中各成員都應(yīng)進(jìn)行類型說明,即其中各成員都應(yīng)進(jìn)行類型說明,即類型名類型名 成員名;成員名; union department int class; char office20; ; (1)union department 先定義再說明;先定義再說明; int class; c

15、har office20; ; union department a,b; (2)union department 定義同時(shí)說明;定義同時(shí)說明; int class; char office20; a,b;(3)union 直接說明。直接說明。 int class; char office20; a,b; (1)結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和。每個(gè)成員分別占有自己的內(nèi)存單元。每個(gè)成員分別占有自己的內(nèi)存單元。 (2)共用體變量所占內(nèi)存長(zhǎng)度是最長(zhǎng)的成員的長(zhǎng)度。即共用共用體變量所占內(nèi)存長(zhǎng)度是最長(zhǎng)的成員的長(zhǎng)度。即共用體變量的地址和它的各成員

16、的地址是同一地址。體變量的地址和它的各成員的地址是同一地址。 對(duì)共用體變量的使用,包括賦值、使用只能是對(duì)變對(duì)共用體變量的使用,包括賦值、使用只能是對(duì)變量的成員進(jìn)行。量的成員進(jìn)行。共用體變量成員的表示方法:共用體變量成員的表示方法:共用體變量名共用體變量名.成員名成員名例:例: 不允許對(duì)共用體變量作初始化賦值,賦值只能在程不允許對(duì)共用體變量作初始化賦值,賦值只能在程序中進(jìn)行。序中進(jìn)行。#include#define PN 3void main( )struct char name10; int age; char job; union int class; char office10; unit

17、s; bodyPN;例:設(shè)有一個(gè)教師和學(xué)生通用的表格,有姓名、年齡、職業(yè)、單位例:設(shè)有一個(gè)教師和學(xué)生通用的表格,有姓名、年齡、職業(yè)、單位4 4項(xiàng)。在職業(yè)項(xiàng)中,用項(xiàng)。在職業(yè)項(xiàng)中,用ss表示學(xué)生,用表示學(xué)生,用tt表示教師。編程輸入表示教師。編程輸入人員數(shù)據(jù),再以表格輸出。人員數(shù)據(jù),再以表格輸出。int n,i;for(i=0;iPN;i+) printf(“input name,age,job and departmentn”); scanf(“%s%d%c”,,&bodyi.age, &bodyi.job); if(bodyi.job=s) ); else

18、); printf(“nametagetjobtclass/officen”);for(i=0;iPN;i+) if(bodyi.job=s) printf(“%st%dt%3ct%dn”,, ); else printf(“%st%dt%3ct%sn”,, ); 當(dāng)某些變量?jī)H由有限個(gè)數(shù)據(jù)值組成時(shí),通常用枚舉類型來當(dāng)某些變量?jī)H由有限個(gè)數(shù)據(jù)值組成時(shí),通常用枚舉類型來表示。表示。 所謂枚舉是指將變量的值一一列舉出來,變量的值只限于所謂枚舉是指將變量的值一一列舉出來,變量的值只限于列舉出來的值的范圍內(nèi)。如一周只有列舉出來的值的范圍內(nèi)。如一周只有7天,一年只有天

19、,一年只有12個(gè)月個(gè)月等等。等等。 注意:枚舉類型是一種基本數(shù)據(jù)類型,而不是一種構(gòu)造注意:枚舉類型是一種基本數(shù)據(jù)類型,而不是一種構(gòu)造類型。關(guān)鍵字為類型。關(guān)鍵字為enum。一般形式:一般形式:enum 枚舉名枚舉名 枚舉值表枚舉值表 ;在枚舉值表中應(yīng)羅列出所有可用值,這些值稱之為枚舉元素。在枚舉值表中應(yīng)羅列出所有可用值,這些值稱之為枚舉元素。例:例:enum weekday sun,mon,tue,wed,thu,fri,sat;聲明了一個(gè)枚舉類型聲明了一個(gè)枚舉類型enum weekday,可以用此類型來定義,可以用此類型來定義變量,該變量只能取變量,該變量只能取7天中的某一天。天中的某一天。

20、(1)enum weekday 先定義再說明;先定義再說明; sun,mon,tue,wed,thu,fri,sat; enum weekday a,b,c; (2)enum weekday 定義同時(shí)說明;定義同時(shí)說明; sun,mon,tue,wed,thu,fri,sata,b,c;(3)enum 直接說明。直接說明。 sun,mon,tue,wed,thu,fri,sata,b,c; (1)在在C編譯中,對(duì)枚舉元素按常量處理,故稱枚舉常量。編譯中,對(duì)枚舉元素按常量處理,故稱枚舉常量。它們不是變量,不能對(duì)它們賦值。它們不是變量,不能對(duì)它們賦值。例:例:sun=5; mon=2; sun=m

21、on;是錯(cuò)誤的。是錯(cuò)誤的。 (2) 枚舉元素本身由系統(tǒng)定義為有序號(hào)的數(shù)值,從枚舉元素本身由系統(tǒng)定義為有序號(hào)的數(shù)值,從0開開始順序定義為始順序定義為0,1,2,例如在例如在weekday中,中,sun值為值為0,mon值為值為1,sat值為值為6。這個(gè)序號(hào)值是可以輸出的。這個(gè)序號(hào)值是可以輸出的。例:例:#include void main( ) enum weekday sun,mon,tue,wed,thu,fri,sata,b,c; a=sun; b=mon; c=tue; printf(“%d,%d,%d”a,b,c); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:0,1,2 (3) 只能把枚舉值賦予枚舉變量,不

22、能把元素的數(shù)值直接只能把枚舉值賦予枚舉變量,不能把元素的數(shù)值直接賦予枚舉變量。賦予枚舉變量。例:例:a=sun; b=mon; 是正確的。是正確的。 a=0; b=1; 是錯(cuò)誤的。是錯(cuò)誤的。如果一定要把數(shù)值賦予枚舉變量,則必須用強(qiáng)制類型轉(zhuǎn)換,如果一定要把數(shù)值賦予枚舉變量,則必須用強(qiáng)制類型轉(zhuǎn)換,則應(yīng)則應(yīng)b=(enum weekday)1; 其意義是將順序號(hào)為其意義是將順序號(hào)為1的枚舉的枚舉元素賦予枚舉變量元素賦予枚舉變量b,等價(jià)于,等價(jià)于b=mon; (4) 枚舉元素不是字符常量,也不是字符串常量,使用時(shí)無(wú)須枚舉元素不是字符常量,也不是字符串常量,使用時(shí)無(wú)須加單、雙引號(hào)。加單、雙引號(hào)。 C語(yǔ)言允

23、許用戶用語(yǔ)言允許用戶用typedef來自定義類型說明符。來自定義類型說明符。例:例:typedef int INTEDER; (指定用指定用INTEDER來代表來代表int類型類型)因此,因此, INTEDER a,b;等價(jià)于等價(jià)于int a,b;typedef定義的一般形式為:定義的一般形式為:typedef 原類型名原類型名 新類型名;新類型名;例:例:typedef char NAME20;其中,其中,NAME是字符數(shù)組類型,長(zhǎng)度為是字符數(shù)組類型,長(zhǎng)度為20。然后可以用。然后可以用NAME說明變量說明變量:NAME s1,s2; 等價(jià)于等價(jià)于char s120,s220;例:例: typ

24、edef struct student int num;y char name20; float score; STU;STU表示表示struct student的結(jié)構(gòu)類型,然后可以用的結(jié)構(gòu)類型,然后可以用STU來說明來說明結(jié)構(gòu)變量:結(jié)構(gòu)變量:STU stu1,stu2;一、問題一、問題1.用數(shù)組的方式存儲(chǔ)學(xué)生的數(shù)據(jù),需要預(yù)先確定學(xué)生的人用數(shù)組的方式存儲(chǔ)學(xué)生的數(shù)據(jù),需要預(yù)先確定學(xué)生的人數(shù),并且數(shù)組占用的是一塊連續(xù)的內(nèi)存區(qū)域。數(shù),并且數(shù)組占用的是一塊連續(xù)的內(nèi)存區(qū)域。2.用動(dòng)態(tài)存儲(chǔ)的方法:每次分配一塊空間存放一個(gè)學(xué)生的數(shù)用動(dòng)態(tài)存儲(chǔ)的方法:每次分配一塊空間存放一個(gè)學(xué)生的數(shù)據(jù),稱之為一個(gè)結(jié)點(diǎn)。有多少學(xué)

25、生就申請(qǐng)分配多少塊空間,據(jù),稱之為一個(gè)結(jié)點(diǎn)。有多少學(xué)生就申請(qǐng)分配多少塊空間,也就建立多少個(gè)結(jié)點(diǎn)。當(dāng)學(xué)生留級(jí)、退學(xué)后,可刪除該結(jié)點(diǎn)也就建立多少個(gè)結(jié)點(diǎn)。當(dāng)學(xué)生留級(jí)、退學(xué)后,可刪除該結(jié)點(diǎn),并釋放該結(jié)點(diǎn)占用的空間。使用動(dòng)態(tài)分配,每個(gè)結(jié)點(diǎn)之間,并釋放該結(jié)點(diǎn)占用的空間。使用動(dòng)態(tài)分配,每個(gè)結(jié)點(diǎn)之間的內(nèi)存空間可以是不連續(xù)的的內(nèi)存空間可以是不連續(xù)的(結(jié)點(diǎn)內(nèi)是連續(xù)的結(jié)點(diǎn)內(nèi)是連續(xù)的)。結(jié)點(diǎn)之間的。結(jié)點(diǎn)之間的聯(lián)系可以用指針實(shí)現(xiàn)。聯(lián)系可以用指針實(shí)現(xiàn)。二、鏈表的定義二、鏈表的定義 用一個(gè)指針變量用一個(gè)指針變量head指向第指向第1個(gè)結(jié)點(diǎn)的首地址,以后每個(gè)個(gè)結(jié)點(diǎn)的首地址,以后每個(gè)結(jié)點(diǎn)都分為兩個(gè)域,一個(gè)是數(shù)據(jù)域,存放各種實(shí)際

26、的數(shù)據(jù)結(jié)點(diǎn)都分為兩個(gè)域,一個(gè)是數(shù)據(jù)域,存放各種實(shí)際的數(shù)據(jù);另一個(gè)域是指針域,存放下一個(gè)結(jié)點(diǎn)的首地址。最后一;另一個(gè)域是指針域,存放下一個(gè)結(jié)點(diǎn)的首地址。最后一個(gè)結(jié)點(diǎn)因無(wú)后續(xù)結(jié)點(diǎn)連接,其指針域可賦予個(gè)結(jié)點(diǎn)因無(wú)后續(xù)結(jié)點(diǎn)連接,其指針域可賦予NULL。 這種連接方式,在數(shù)據(jù)結(jié)構(gòu)中稱為鏈表。這種連接方式,在數(shù)據(jù)結(jié)構(gòu)中稱為鏈表。 鏈表中每一個(gè)結(jié)點(diǎn)都是同一種結(jié)構(gòu)類型。鏈表中每一個(gè)結(jié)點(diǎn)都是同一種結(jié)構(gòu)類型。例:一個(gè)存放學(xué)生的學(xué)號(hào)和成績(jī)的結(jié)點(diǎn)為:例:一個(gè)存放學(xué)生的學(xué)號(hào)和成績(jī)的結(jié)點(diǎn)為: struct student1 int num; float score; struct student1 *next; 前兩個(gè)成員

27、項(xiàng)組成數(shù)據(jù)域,后一個(gè)成員項(xiàng)前兩個(gè)成員項(xiàng)組成數(shù)據(jù)域,后一個(gè)成員項(xiàng)next構(gòu)成指針域構(gòu)成指針域,它是一個(gè)指向同類型結(jié)構(gòu)的指針變量。,它是一個(gè)指向同類型結(jié)構(gòu)的指針變量。#include#define NULL 0struct student long num; float score; struct student *next; ; void main( )struct student a,b,c,*head,*p; =00101;a.score=89.5; =00103;b.score=90; =00107;c.score=85;例:建立一個(gè)簡(jiǎn)單鏈表,由例:建立一個(gè)簡(jiǎn)單鏈表,由3 3個(gè)學(xué)生數(shù)據(jù)的結(jié)

28、點(diǎn)組成。輸出各結(jié)個(gè)學(xué)生數(shù)據(jù)的結(jié)點(diǎn)組成。輸出各結(jié)點(diǎn)中的數(shù)據(jù)。點(diǎn)中的數(shù)據(jù)。head=&a;=&b;=&c;=NULL;p=head;doprintf(“%ld%5.1fn”,p-num,p-score); p=p-next; while(p!=NULL);三、單向鏈表的建立三、單向鏈表的建立 可以采取向鏈表中添加結(jié)點(diǎn)的方式來建立一個(gè)單向鏈表。可以采取向鏈表中添加結(jié)點(diǎn)的方式來建立一個(gè)單向鏈表。 為了向鏈表中添加一個(gè)新結(jié)點(diǎn),首先要為新建結(jié)點(diǎn)動(dòng)態(tài)為了向鏈表中添加一個(gè)新結(jié)點(diǎn),首先要為新建結(jié)點(diǎn)動(dòng)態(tài)申請(qǐng)內(nèi)存空間,讓指針變量申請(qǐng)內(nèi)存空間,讓指針變量p指向這個(gè)新建結(jié)點(diǎn)指向這個(gè)新建結(jié)點(diǎn),然后將新然后將新建結(jié)點(diǎn)添加到鏈表中。建結(jié)點(diǎn)添加到鏈表中。需要考慮以下兩種情況:需要考慮以下兩種情況:(1)若原鏈表

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論