![實(shí)用簡單的C語言編程課件8第八章資料_第1頁](http://file4.renrendoc.com/view/af32617908efe256ee68cf1a27d2929b/af32617908efe256ee68cf1a27d2929b1.gif)
![實(shí)用簡單的C語言編程課件8第八章資料_第2頁](http://file4.renrendoc.com/view/af32617908efe256ee68cf1a27d2929b/af32617908efe256ee68cf1a27d2929b2.gif)
![實(shí)用簡單的C語言編程課件8第八章資料_第3頁](http://file4.renrendoc.com/view/af32617908efe256ee68cf1a27d2929b/af32617908efe256ee68cf1a27d2929b3.gif)
![實(shí)用簡單的C語言編程課件8第八章資料_第4頁](http://file4.renrendoc.com/view/af32617908efe256ee68cf1a27d2929b/af32617908efe256ee68cf1a27d2929b4.gif)
![實(shí)用簡單的C語言編程課件8第八章資料_第5頁](http://file4.renrendoc.com/view/af32617908efe256ee68cf1a27d2929b/af32617908efe256ee68cf1a27d2929b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第八章 結(jié)構(gòu)(jigu)體與鏈表 掌握:結(jié)構(gòu)體類型、結(jié)構(gòu)體變量與指針的定義方法 掌握:結(jié)構(gòu)體數(shù)組的定義和初始化方法 掌握:結(jié)構(gòu)體變量成員的引用方法 掌握:鏈表的主要操作方法 掌握:共用體類型、共用體變量的定義方法 了解(lioji):typedef的用法 重點(diǎn):結(jié)構(gòu)體類型變量、數(shù)組和指針的應(yīng)用 難點(diǎn):鏈表的主要操作方法1C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁8.1 結(jié)構(gòu)體的定義(dngy)和引用一、結(jié)構(gòu)(jigu)體類型定義 結(jié)構(gòu)體類型定義的格式為:struct 結(jié)構(gòu)體類型名 數(shù)據(jù)類型說明符1 結(jié)構(gòu)體成員名1; 數(shù)據(jù)類型說明符2 結(jié)構(gòu)體成員名2; 數(shù)據(jù)類型說明符n 結(jié)構(gòu)體成員名n;
2、 ;舉例:2C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁如學(xué)籍管理系統(tǒng)中學(xué)生信息由學(xué)號、姓名、年齡、10門課程成績和籍貫組成。定義學(xué)生信息的結(jié)構(gòu)體類型(lixng)如下:struct students unsigned int id; char name20; char age; float score10; char address30; 3C程序設(shè)計(jì)(chn x sh j)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁9.2 文件類型指針(zhzhn)二、結(jié)構(gòu)體類型變量(binling)的定義 (1)首先定義結(jié)構(gòu)體數(shù)據(jù)類型,格式如下:struct 結(jié)構(gòu)體類型名數(shù)據(jù)類型說明符1 結(jié)構(gòu)體成員名
3、1;數(shù)據(jù)類型說明符2 結(jié)構(gòu)體成員名2;數(shù)據(jù)類型說明符n 結(jié)構(gòu)體成員名n;struct 結(jié)構(gòu)體類型名變量名稱表列;4C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁(2)在定義結(jié)構(gòu)體類型的同時(shí)定義結(jié)構(gòu)體變量(binling),將結(jié)構(gòu)體類型的定義和變量(binling)的定義放在一個(gè)說明語句中,格式如下:struct 結(jié)構(gòu)體類型名數(shù)據(jù)類型說明符1 結(jié)構(gòu)體成員名1;數(shù)據(jù)類型說明符2 結(jié)構(gòu)體成員名2;數(shù)據(jù)類型說明符n 結(jié)構(gòu)體成員名n;變量名稱表列;5C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電(jdin)學(xué)院共二十九頁如:struct students unsigned int id; char name2
4、0; char age; float score10; char address30; stu1,stu2;6C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電(jdin)學(xué)院共二十九頁三、結(jié)構(gòu)體變量的初始化和成員引用 1.整體賦值法 若結(jié)構(gòu)體類型(lixng)變量中各成員均是基本數(shù)據(jù)類型(lixng),則可以采用下面的方法:結(jié)構(gòu)體變量= 初值表 ;對于存在結(jié)構(gòu)體類型嵌套的變量,格式如下:結(jié)構(gòu)體變量=成員1初值,成員2初值,子成員1,成員n初值;2. 分量賦值法 定義:分量賦值法就是用程序語句為結(jié)構(gòu)體類型變量的某些成員進(jìn)行賦值。方法:先書寫要賦值的成員名稱,然后利用賦值運(yùn)算符或有關(guān)函數(shù)進(jìn)行賦值。 如:st1
5、.birthday.year=1985;7C程序設(shè)計(jì)(chn x sh j)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁8.2 結(jié)構(gòu)(jigu)體數(shù)組一、結(jié)構(gòu)體數(shù)組的定義 定義:可以參照結(jié)構(gòu)體類型(lixng)變量的定義方法 形式 :struct 結(jié)構(gòu)體類型名 數(shù)據(jù)類型說明符1 結(jié)構(gòu)體成員名1; 數(shù)據(jù)類型說明符2 結(jié)構(gòu)體成員名2; 數(shù)據(jù)類型說明符n 結(jié)構(gòu)體成員名n; ; struct 結(jié)構(gòu)體類型名 數(shù)組名常量表達(dá)式; 8C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁實(shí)例如下:struct students unsigned int id; char name20; char age; floa
6、t score10; char address30;stu40;說明:以上代碼定義了由40個(gè)元素組成的students結(jié)構(gòu)體數(shù)組,每個(gè)元素均是students類型(lixng),即都包含有學(xué)號id、姓名name、年齡age、成績score和地址address等成員信息。 9C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電(jdin)學(xué)院共二十九頁二、結(jié)構(gòu)體數(shù)組的初始化 1. 分行初始化 格式為:struct 結(jié)構(gòu)體類型名 數(shù)組名元素個(gè)數(shù)=,; 2. 整體初始化 格式:struct 結(jié)構(gòu)體類型名 數(shù)組名元素個(gè)數(shù)= , , , ;【例8.1】對某班級同學(xué)的總成績按升序排序。設(shè)每個(gè)同學(xué)的信息由學(xué)號、姓名、年齡、
7、籍貫、三門功課成績和總成績組成。 分析:對于結(jié)構(gòu)體數(shù)組的排序方法(fngf),可以直接使用冒泡排序法和直接選擇排序法原理,關(guān)鍵是在進(jìn)行數(shù)據(jù)交換時(shí)的操作,可以對數(shù)組元素的各個(gè)成員進(jìn)行數(shù)據(jù)交換,也可以借助于相同類型的結(jié)構(gòu)體變量進(jìn)行數(shù)據(jù)交換。 10C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)(dxu)機(jī)電學(xué)院共二十九頁8.3 指向結(jié)構(gòu)(jigu)體的指針 一、結(jié)構(gòu)體指針變量的定義 方法:在結(jié)構(gòu)體變量名稱的前面加“*”符號即可。三種(sn zhn)定義形式 :(1)struct 結(jié)構(gòu)體類型名;struct 結(jié)構(gòu)體類型名 *指針變量名; (2)struct 結(jié)構(gòu)體類型名*指針變量名; (3)struct*指針變量名
8、;11C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁二、結(jié)構(gòu)體指針(zhzhn)變量的賦值 格式為:結(jié)構(gòu)體指針變量=&表達(dá)式; 三、結(jié)構(gòu)體指針變量成員的引用 兩種形式:(1)(*結(jié)構(gòu)體指針變量名).成員名;(2)結(jié)構(gòu)體指針變量名-成員名?!纠?.2】結(jié)構(gòu)體指針的應(yīng)用。 12C程序設(shè)計(jì)實(shí)例教程 山東科技(kj)大學(xué)機(jī)電學(xué)院共二十九頁#include stdio.hstruct studentsunsigned int id;char name10;char age;char address10;float score3;stu=1,zhangsan,20,qingdao,56,78,90;v
9、oid main()struct students *p=&stu;printf( id name age address score1 score2 score3 tscoren);printf(%3d%10s%3d%10s%7.1f%7.1f%7.1f%7.1fn,p-id,p-name, p -age, p-address,p-score0,p-score1,p-score2);13C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)(dxu)機(jī)電學(xué)院共二十九頁四、指向結(jié)構(gòu)(jigu)體數(shù)組的指針 對于結(jié)構(gòu)體數(shù)組或結(jié)構(gòu)體數(shù)組元素也同樣可以建立指向結(jié)構(gòu)體數(shù)組或它的元素的指針變量,通過該變量來訪問結(jié)構(gòu)體數(shù)組的元
10、素?!纠?.3】結(jié)構(gòu)體指針的應(yīng)用 14C程序設(shè)計(jì)實(shí)例教程 山東科技(kj)大學(xué)機(jī)電學(xué)院共二十九頁五、結(jié)構(gòu)體指針數(shù)組 結(jié)構(gòu)體指針數(shù)組的定義:struct結(jié)構(gòu)體類型名 *結(jié)構(gòu)體數(shù)組名數(shù)組元素個(gè)數(shù) 結(jié)構(gòu)體指針數(shù)組元素的賦值 結(jié)構(gòu)體指針數(shù)組中的各個(gè)(gg)元素均是指針類型,因此,在賦值時(shí)必須使用指向同種類型結(jié)構(gòu)體變量的指針。如:struct students*stu5,stu1;stu0=&stu1; 為數(shù)組的第一個(gè)元素賦值 15C程序設(shè)計(jì)(chn x sh j)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁8.4 鏈表的基本操作 一、單鏈表 定義:鏈表是用一組任意的存儲單元來存放線性表的節(jié)點(diǎn) 。組成:在鏈
11、表結(jié)構(gòu)(jigu)中存在一個(gè)指向鏈表頭結(jié)點(diǎn)的指針變量,如圖中的head,它存放一個(gè)地址,該地址指向一個(gè)元素,鏈表中每個(gè)元素稱為節(jié)點(diǎn)。 存儲形式:16C程序設(shè)計(jì)實(shí)例教程 山東科技(kj)大學(xué)機(jī)電學(xué)院共二十九頁二、內(nèi)存操作函數(shù) (1)malloc函數(shù)。函數(shù)原型:void * malloc(unsigned size)說明:該函數(shù)的原型在stdlib.h和alloc.h頭文件中功能:在內(nèi)存中分配大小為size字節(jié)的連續(xù)存儲空間。(2)calloc函數(shù)。函數(shù)原型:void *calloc(unsigned num,unsigned size)說明:該函數(shù)的原型在stdlib.h和alloc.h頭文件中
12、功能:在內(nèi)存中連續(xù)分配num個(gè)長度為size字節(jié)的存儲空間。(3)free函數(shù)。函數(shù)原型:void free(void * ptr)說明:該函數(shù)的原型在stdlib.h頭文件中。功能:釋放(shfng)有ptr所指向的內(nèi)存。17C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電(jdin)學(xué)院共二十九頁三、單鏈表的基本操作 1. 建立空鏈表在鏈表中存在一個(gè)“頭節(jié)點(diǎn)”,也就是指向目標(biāo)鏈表首個(gè)節(jié)點(diǎn)的一個(gè)指針,在建立鏈表之前應(yīng)該先定義這個(gè)指針并為其賦值。2. 顯示鏈表對于鏈表的輸出,應(yīng)從頭指針開始,依次遍歷鏈表的每個(gè)節(jié)點(diǎn),直到鏈表結(jié)尾(jiwi)(空指針)。3. 添加節(jié)點(diǎn)對鏈表按順序添加新的節(jié)點(diǎn)時(shí),根據(jù)該節(jié)點(diǎn)與頭
13、指針之間的位置關(guān)系,一般有頭插法和尾插法兩種形式。 18C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)(dxu)機(jī)電學(xué)院共二十九頁(1)頭插法 (2)尾插法 19C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)(dxu)機(jī)電學(xué)院共二十九頁 4. 查找節(jié)點(diǎn) (1)按序號查找:采用從頭節(jié)點(diǎn)開始逐個(gè)遍歷的方式,并在遍歷過程中記錄已經(jīng)遍歷的個(gè)數(shù),直到遍歷個(gè)數(shù)符合要求為止。 (2)按值查找 :按值查找是是自鏈表的頭節(jié)點(diǎn)開始,依次判斷節(jié)點(diǎn)數(shù)據(jù)域的某項(xiàng)數(shù)值(shz)與給定值是否相同 5. 插入節(jié)點(diǎn) (1)后插法 20C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)(dxu)機(jī)電學(xué)院共二十九頁(2)前插法 6. 刪除(shnch)節(jié)點(diǎn) 21C程序設(shè)計(jì)實(shí)例
14、教程 山東科技(kj)大學(xué)機(jī)電學(xué)院共二十九頁7. 節(jié)點(diǎn)排序方法:主要有冒泡排序、直接選擇排序等 舉例:以下是按姓名方式(fngsh)對鏈表的各節(jié)點(diǎn)進(jìn)行升序排序。 22C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)(dxu)機(jī)電學(xué)院共二十九頁comlist *sortbyname(comlist *h) comlist *p1=h,*p2,*p; while(p1-next!=NULL) p=p1; p2=p1-next; while(p2!=NULL) if(strcmp(p-name,p2-name)0) p=p2; p2=p2-next; if(p!=p1) exchangenode(p,p1); pr
15、intf(OKn); p1=p1-next; return(h);23C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電(jdin)學(xué)院共二十九頁8.5 共用(n yn)體的定義和引用 一、共用體類型及變量的定義(dngy) 共用體類型的定義union 共用體類型名數(shù)據(jù)類型說明符1 共用體成員名1;數(shù)據(jù)類型說明符n 共用體成員名n;;2. 共用體變量的定義 union 共用體類型名數(shù)據(jù)類型說明符1 共用體成員名1;數(shù)據(jù)類型說明符n 共用體成員名n;變量名表列;24C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁二、共用體變量的引用方法方法:只能引用共用體變量的成員,而不能引用整個(gè)共用體變量 。形式:a.l
16、g(引用共用體變量的lg成員) a.high(引用共用體變量的high成員)三、共用體變量的賦值 方法:采用按成員進(jìn)行單獨(dú)賦值的方式,共用體變量在內(nèi)存中存儲的結(jié)果是最后一次進(jìn)行賦值操作的成員的數(shù)值。如: num.n=1000;四、共用體類型數(shù)據(jù)(shj)的特點(diǎn) (1)同一個(gè)內(nèi)存空間可以用來存放幾種不同類型的成員,但在某個(gè)時(shí)刻只能存放其中一個(gè)成員的數(shù)值;25C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電(jdin)學(xué)院共二十九頁(2)共用體變量中所占內(nèi)存單元的內(nèi)容是最后一次存入的成員的數(shù)值;(3)共用體變量的地址和它的各成員的地址都相同(4)不能在定義共用體變量時(shí)對它進(jìn)行初始化?!纠?.5】利用(lyng
17、)共用體來獲取一個(gè)整型數(shù)的高、低字節(jié)的內(nèi)容 。#include stdio.hunion int n; unsigned char bt2;num;void main() printf(Input a Number:); scanf(%d,&num.n); printf(nhigh=%X,low=%X,num.bt1,num.bt0);26C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電(jdin)學(xué)院共二十九頁8.6 typedef定義(dngy)類型 一、何為typedef?定義:typedef為C語言的關(guān)鍵字,作用是為一種數(shù)據(jù)類型定義一個(gè)新名字。 應(yīng)用形式為:typedef 已有類型(lixng)名
18、 新類型(lixng)名二、作用(1)用于對數(shù)據(jù)類型的命名 typedef int integer;integer i,j;(2)用于對數(shù)組和指針類型的命名 typedef int NUM10; (聲明NUM為整型數(shù)組類型)NUM a; (定義a為整型數(shù)組) 27C程序設(shè)計(jì)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁三、typedef 與 #define 異同#define通常用于宏的定義,可以使用 #ifdef,#ifndef等來進(jìn)行邏輯判斷,還可以使用#undef來取消定義。用typedef定義的變量類型在其所定義位置的函數(shù)或文件內(nèi)部后續(xù)范圍內(nèi)有效,可以任意使用。通常講,typedef要比#define要好,特別是在有指針(zhzhn)的場合。 28C程序設(shè)計(jì)(chn x sh j)實(shí)例教程 山東科技大學(xué)機(jī)電學(xué)院共二十九頁內(nèi)容摘要第八章 結(jié)構(gòu)體與鏈表。C程序設(shè)計(jì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代轉(zhuǎn)型中的城市社區(qū)治理框架
- 物流信息管理與大數(shù)據(jù)分析技術(shù)探索
- 現(xiàn)代企業(yè)人力資源管理的法律風(fēng)險(xiǎn)防范
- 生物化學(xué)與營養(yǎng)學(xué)的交叉研究
- Unit1 They're monkeys(說課稿)-2023-2024學(xué)年外研版(三起)英語三年級下冊
- Unit 6 Touch your head(說課稿)-2024-2025湘少版(2024)英語三年級上冊
- 現(xiàn)代醫(yī)療背景下如何利用電信業(yè)務(wù)服務(wù)患者
- 淺析全球范圍內(nèi)如何開展綠色產(chǎn)品的采購管理
- 生物技術(shù)開啟農(nóng)業(yè)新紀(jì)元
- 生態(tài)修復(fù)技術(shù)在林業(yè)發(fā)展中的應(yīng)用
- 2025-2030年中國納米氧化鋁行業(yè)發(fā)展前景與投資戰(zhàn)略研究報(bào)告新版
- 教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)要點(diǎn)解讀(教育是強(qiáng)國建設(shè)民族復(fù)興之基)
- 2025年度正規(guī)離婚協(xié)議書電子版下載服務(wù)
- 2025年貴州蔬菜集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 煤礦安全生產(chǎn)方針及法律法規(guī)課件
- 2025年教科室工作計(jì)劃樣本(四篇)
- 2024年版古董古玩買賣合同:古玩交易稅費(fèi)及支付規(guī)定
- 幼兒園費(fèi)用報(bào)銷管理制度
- 【7歷期末】安徽省宣城市2023-2024學(xué)年七年級上學(xué)期期末考試歷史試題
- 春節(jié)后安全生產(chǎn)開工第一課
- 進(jìn)入答辯環(huán)節(jié)的高職應(yīng)用技術(shù)推廣中心申報(bào)書(最終版)
評論
0/150
提交評論