![復(fù)合數(shù)據(jù)類(lèi)型(共38張PPT)_第1頁(yè)](http://file4.renrendoc.com/view/1f929eb2c91a4b6ab1082abf0ff9e447/1f929eb2c91a4b6ab1082abf0ff9e4471.gif)
![復(fù)合數(shù)據(jù)類(lèi)型(共38張PPT)_第2頁(yè)](http://file4.renrendoc.com/view/1f929eb2c91a4b6ab1082abf0ff9e447/1f929eb2c91a4b6ab1082abf0ff9e4472.gif)
![復(fù)合數(shù)據(jù)類(lèi)型(共38張PPT)_第3頁(yè)](http://file4.renrendoc.com/view/1f929eb2c91a4b6ab1082abf0ff9e447/1f929eb2c91a4b6ab1082abf0ff9e4473.gif)
![復(fù)合數(shù)據(jù)類(lèi)型(共38張PPT)_第4頁(yè)](http://file4.renrendoc.com/view/1f929eb2c91a4b6ab1082abf0ff9e447/1f929eb2c91a4b6ab1082abf0ff9e4474.gif)
![復(fù)合數(shù)據(jù)類(lèi)型(共38張PPT)_第5頁(yè)](http://file4.renrendoc.com/view/1f929eb2c91a4b6ab1082abf0ff9e447/1f929eb2c91a4b6ab1082abf0ff9e4475.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章復(fù)合數(shù)據(jù)類(lèi)型和類(lèi)型定義結(jié)
構(gòu)
類(lèi)
型聯(lián)
合
類(lèi)
型枚
舉
類(lèi)
型類(lèi)
型
定
義7.1
結(jié)構(gòu)類(lèi)型(復(fù)習(xí)引入)現(xiàn)實(shí)生活中,每個(gè)事物都有若干個(gè)屬性,且
各
自
的
類(lèi)
型
不
同
。例如,學(xué)生成績(jī)登記表,表中每個(gè)學(xué)生都有學(xué)號(hào)、姓名、總分和名次等屬性。其中學(xué)號(hào)用長(zhǎng)整型表示;姓名用字符串表示;總分用浮點(diǎn)數(shù)表示;名次用整數(shù)表示。對(duì)于這樣的數(shù)據(jù)形式,可以用結(jié)構(gòu)體類(lèi)型
來(lái)描述。7.1
結(jié)構(gòu)定義、引用和初始化一
、
結(jié)構(gòu)類(lèi)型定義的一般形式:
P229struct
結(jié)構(gòu)標(biāo)識(shí)符{數(shù)據(jù)類(lèi)型成員名1;數(shù)據(jù)類(lèi)型成員名2;數(shù)據(jù)類(lèi)型成員名n;};其中:struct是關(guān)鍵字,結(jié)構(gòu)標(biāo)識(shí)符和各成員由用戶(hù)自行命名;關(guān)鍵字
struct連同其后的結(jié)構(gòu)標(biāo)識(shí)符一起稱(chēng)為結(jié)構(gòu)類(lèi)型名或結(jié)構(gòu)名;各成
員的定義語(yǔ)句放在花括號(hào)中構(gòu)成復(fù)合語(yǔ)句,花括號(hào)后面的分號(hào)是
整個(gè)定義語(yǔ)句的結(jié)尾。用
途
:
把、不、同類(lèi)型
的
數(shù)
據(jù)
組
合
成
一
個(gè)
整
體
——構(gòu)造出新的數(shù)據(jù)類(lèi)型structaccount{
longid;charname[20];structdate
Date;dateyear;month;day;struct{
intint
int例如定義一個(gè)日期的結(jié)構(gòu)體類(lèi)型:例
如
定
義
一
個(gè)
銀
行
存
款
帳
戶(hù)
的
結(jié)
構(gòu)
體
類(lèi)
型
:float
money;struct
stuchar
num[5],
name[10],int
age;float
score;char
speciality[20];};結(jié)構(gòu)類(lèi)型定義擋遠(yuǎn)結(jié)構(gòu)的組織形式,確見(jiàn)了該類(lèi)型的內(nèi)存分
配模式,但不分配內(nèi)存!二
、結(jié)構(gòu)類(lèi)型存儲(chǔ)模式:
P230例sex;內(nèi)存分配模式說(shuō)明:P230●
結(jié)構(gòu)體成員的類(lèi)型可以是簡(jiǎn)單類(lèi)型、數(shù)組類(lèi)型或者是結(jié)構(gòu)體類(lèi)
型
等
任
何
數(shù)
據(jù)
類(lèi)
型●
結(jié)構(gòu)體類(lèi)型的定義只是描述結(jié)構(gòu)體的組織形式,并沒(méi)
有分配一段內(nèi)存單元來(lái)存放各數(shù)據(jù)項(xiàng)規(guī)員。只有定義
了這種類(lèi)型的變量,系統(tǒng)才為變量分配內(nèi)存空間,
占據(jù)存儲(chǔ)單元?!?/p>
結(jié)構(gòu)體類(lèi)型定義可以在函數(shù)的內(nèi)部,其作用域僅限于該函數(shù)內(nèi)部;也可以定義在函數(shù)的外部,其作用域是從定義處開(kāi)始到本文件結(jié)束
?!?/p>
在定義結(jié)構(gòu)體類(lèi)型時(shí),數(shù)據(jù)類(lèi)型相同的成員可以在
一行中說(shuō)明,成員間用逗號(hào)分開(kāi)。三、
結(jié)構(gòu)體類(lèi)型變量、結(jié)構(gòu)數(shù)組和結(jié)構(gòu)指針的定義:
P231某個(gè)結(jié)構(gòu)體類(lèi)型一經(jīng)定義
就可以指明該種結(jié)構(gòu)體的具體對(duì)象,即定義該種類(lèi)型的
變
量
。定
義
結(jié)
構(gòu)
體
類(lèi)
型
的
變
量
的
三
種
方
法
:●
先定義結(jié)構(gòu)體類(lèi)型,再定義該種類(lèi)型的變
量
?!?/p>
在定義結(jié)構(gòu)體類(lèi)型的同時(shí)定義結(jié)構(gòu)體變量?!?/p>
直接定義結(jié)構(gòu)體類(lèi)型變量。1、
結(jié)構(gòu)類(lèi)型的作用域應(yīng)用該類(lèi)型定義變量或應(yīng)用該類(lèi)型變量的有效位置(1)局部結(jié)構(gòu)類(lèi)型的作用域函數(shù)名(
)struct
stul局部結(jié)構(gòu)類(lèi)型作用域從定義處至該函數(shù)結(jié)束從定義處開(kāi)始,直到其所在源程序文件結(jié)束。{.…};函數(shù)名(){
……(2)全局結(jié)構(gòu)類(lèi)型的作用域全局結(jié)構(gòu)類(lèi)型作用域struct
stu2三、
結(jié)構(gòu)變量、結(jié)構(gòu)數(shù)組、結(jié)構(gòu)指針的定義(1)先定義結(jié)構(gòu)類(lèi)型,再進(jìn)行變量定義一般形式
struct
結(jié)構(gòu)
名成員列表};struct
結(jié)構(gòu)名
變量名表列;struct
student
例
define
STUDENT
struct
student{
int
num;char
name[20
{
int
num;char
sex;
char
name[20];char
sex;int
age;
int
age;};
};struct
student
s
STUDENT
st1,s[5],*p;STUDENTdefine
STUDENT
structSTUDENTint
num;char
name[20];char
sex;int
age;};STUDENT
st1,s[5],*p;思考:結(jié)構(gòu)指針p所占空間大小是多少個(gè)字節(jié)?4
個(gè)
字
節(jié)結(jié)構(gòu)數(shù)組s[5]的內(nèi)存分配形式為:1ullnaimeSeXagenu1lnaineSeXagestudent29B(2)定義結(jié)構(gòu)類(lèi)型的同時(shí)定義變量一般形式:struct
結(jié)構(gòu)名成員列表表列;struct
student{
int
num;char
name[20];char
sex;int
age;}stul,stu2[2],*p;例變量名表列;例
struct{
int
num;char
name[20];char
sex;int
age;}st1,s[5],*p;(
3
)
應(yīng)
用
無(wú)
名
結(jié)
構(gòu)
類(lèi)
型
直
接
定
義
變
量一
般
形
式
:struct成員列表用無(wú)名結(jié)構(gòu)直接定義
變量只能一次。注意:這
種
形
式
由
于
省
略了結(jié)構(gòu)體名,因此
以后不能用它再來(lái)
定
義
其
它
變
量
。說(shuō)
明
:結(jié)構(gòu)體變量的定義在函數(shù)的數(shù)據(jù)說(shuō)明部分進(jìn)行,也可以在函數(shù)的外部定義。但都必須是類(lèi)型定義在前,變量定義在
后
。結(jié)構(gòu)體變量一經(jīng)定義,在程序運(yùn)行時(shí),系統(tǒng)將按照結(jié)
構(gòu)
體
類(lèi)
型
定
義
時(shí)
的
內(nèi)
存
模
式
為
結(jié)
構(gòu)
體
變
量
分
配
一
定的存儲(chǔ)單元。一個(gè)結(jié)構(gòu)體變量在內(nèi)存中占用存儲(chǔ)空間的實(shí)際字節(jié)數(shù),就
是
結(jié)
構(gòu)
體
類(lèi)
型
定
義
時(shí)
各
個(gè)
成
員
項(xiàng)
所
占
字
節(jié)
數(shù)
的
總
和
,可以利用sizeof
運(yùn)算符求出一個(gè)結(jié)構(gòu)體類(lèi)型數(shù)據(jù)的長(zhǎng)度。(4)嵌套結(jié)構(gòu)定義(a)
當(dāng)結(jié)構(gòu)類(lèi)型的成員屬于一復(fù)雜類(lèi)型時(shí),稱(chēng)該結(jié)構(gòu)類(lèi)型為嵌套結(jié)構(gòu)。(b)
嵌套結(jié)構(gòu)有以下兩種形式:例
struct
date{
int
month;int
day;例
struct
studentint
num;char
name[20];structdate
{
int
month;int
day;int
year;}birthday;}stu;numnamebirthdamonthdayyearchar
name[20];struct
date
birthday;
}stu;int
year;
};struct
student{
int
num;(5)
結(jié)
構(gòu)
體
變
量
的
初
始
化結(jié)構(gòu)體類(lèi)型變量在定義時(shí)也可以直接對(duì)其進(jìn)行初始化。可以在主程序中定義并直接初始化結(jié)構(gòu)體變量。P237【例7.2】一個(gè)汽車(chē)檔案中包括汽車(chē)的編號(hào)、顏色和型號(hào)。輸入一個(gè)
汽車(chē)編號(hào),由find()函數(shù)進(jìn)行查找,根據(jù)查找結(jié)果輸出查找到汽車(chē)的
信息。#include
<stdio.h>struct
sample{
int
num;char
color;char
type;}
car[]={
101,'G','c',210,'Y','m',105,'R',T,220,'B','s',308,'W','b',0,\0',^\0'};、結(jié)構(gòu)成員的訪問(wèn)一
、
引用結(jié)構(gòu)體變量的成員項(xiàng):一般情況下對(duì)結(jié)構(gòu)體變量的使用,是用結(jié)構(gòu)體的各個(gè)成
員
項(xiàng)
來(lái)
參
加
各
種
運(yùn)
算
和
操
作
。引用結(jié)構(gòu)體變量中的成員項(xiàng)的形式為:結(jié)
構(gòu)
體
變
量
名
.
成
員
項(xiàng)
名例
如
:
將
日
期
2
0
2
1
年
5
月
1
2
日
賦
給struct
date型
變
量Date
l
可表示成:Date1.
year=2021;Date1.
month=5;Date1.
day=12;說(shuō)
明
:“.
”是一個(gè)運(yùn)算符,表示對(duì)結(jié)構(gòu)體變量的成員進(jìn)行訪問(wèn)運(yùn)算,它的優(yōu)先級(jí)為最高級(jí),結(jié)合方向是從
左到右。結(jié)構(gòu)體成員項(xiàng)是結(jié)構(gòu)體中的一個(gè)數(shù)據(jù),對(duì)其進(jìn)行何種運(yùn)算是由它的類(lèi)型決定,
允許參加運(yùn)算的種類(lèi)與同類(lèi)型的簡(jiǎn)單變量的種類(lèi)相同。如
果
一
個(gè)
結(jié)
構(gòu)
體
成
員
本
身
又
是
一
個(gè)
結(jié)
構(gòu)
體
類(lèi)
型
變
量則要通過(guò)兩個(gè)“.”運(yùn)算符來(lái)訪問(wèn)該結(jié)構(gòu)成員的結(jié)構(gòu)成員。如
下
面
的
賦
值
語(yǔ)
句
是
合
法
的
:wang=zhang;注意:不
允
許
用
賦
值
語(yǔ)
句
將
一
組常
量
直
接
賦
值
給
一
個(gè)
結(jié)
構(gòu)
體變量。如下面的賦值語(yǔ)句是不合法的:二、
一個(gè)結(jié)構(gòu)體變量作為一個(gè)整體來(lái)引用。C語(yǔ)言允許兩個(gè)相同類(lèi)型的結(jié)構(gòu)體變量之間相互賦值,這
種
結(jié)
構(gòu)
體
變
量
之
間
賦
值
的
過(guò)
程
是
一
個(gè)
結(jié)
構(gòu)
體
變
量
的
成員項(xiàng)的值賦給另一個(gè)結(jié)構(gòu)體變量的相應(yīng)部分。wang=【例7.1x】
結(jié)構(gòu)變量的初始化struct
studentchar
number[5],*name;char
sex;struct
date{
int
year;
int
month;
int
day;}birthday;
float
score;char
speciality[11];char
school[31];};main()s
truct
student
st1={'1001","Liming",'0',1983,10,25,573,"Computer","3th
High
School,Beijing"'};三
、
結(jié)
構(gòu)
體
數(shù)
組
和
結(jié)
構(gòu)
體
指
針(1)、結(jié)構(gòu)體數(shù)組:當(dāng)數(shù)組中的元素是結(jié)構(gòu)體類(lèi)型的
就構(gòu)成了結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組是具有相同結(jié)
構(gòu)
體
類(lèi)
型
的
變
量
集
合
。(2)、結(jié)構(gòu)體指針指
向
結(jié)
構(gòu)體
類(lèi)
型
變
量
的
指
針
稱(chēng)
為
指
向
結(jié)
構(gòu)體
的指針或結(jié)構(gòu)體指針
。訪
問(wèn)
結(jié)
構(gòu)
體
指
針
所
指
向
的
結(jié)
構(gòu)
體
變量
的成員可以采用以下兩種方法:方法1:(*結(jié)構(gòu)體指針名入成員項(xiàng)名方法2:
結(jié)構(gòu)體指針名->成員頁(yè)名struct
student
s[5];例如:
(*s).name,
(*s).sex,
(*s).age或
者
s->name,
(s+1)->sex,
s[2].
segstruct
student
s[5],*p=s;例如:
(*p).name,
(*p).sex,
(*p).age或者
p->name,
Ip->sex,
p->sex7.13結(jié)構(gòu)變量、結(jié)構(gòu)數(shù)組的賦值、輸入和輸出
7.14結(jié)構(gòu)類(lèi)型數(shù)據(jù)在函數(shù)間的傳遞(1)P236
【例7.1】結(jié)構(gòu)變量的賦值、輸入和輸出(2)結(jié)構(gòu)體數(shù)組的賦值、輸入和輸出P241
【例7.6】建立一個(gè)小通訊錄:input()用于輸入通訊
錄數(shù)據(jù),
display()用于輸出通訊錄,主程序通過(guò)結(jié)構(gòu)
數(shù)組名調(diào)用input()和display(。P241
【例7.6】建立一個(gè)小通訊錄:
input()用于輸入通訊錄數(shù)據(jù),display()用于輸出通訊錄,主程序通過(guò)結(jié)構(gòu)數(shù)組名調(diào)用
input()和displayO。#include
<stdio.h>#define
MAX10struct
telephone{char
name[20];
char
mobile[12];
char
phone[12];};input(struct
telephone
*p){int
i;for(i=0;i<MAX;i++){printf("Name?");gets(p->name);if
(p->name[0]==^\0')
return(i);/*提前結(jié)束輸入*printf("Mobile?");scanf("%*c%s",p->mobile);printf("Telephone?");scanf("%*c%s%*c",p->phone);};return
MAX;}void
display(struct
telephone
*p,int
n){
int
i;for(i=0;i<n;i++,p++)printf("%-20s%-
12s%-
12s\n",p->name,p->mobile,p->phone);main(){struct
telephonetx[MAX];
int
n;n=input(tx);display(tx,n);/*輸出通訊錄*/一、
返回值方式被調(diào)用函數(shù)可以通過(guò)返回一個(gè)結(jié)構(gòu)變量或一個(gè)結(jié)構(gòu)指
針的方式向調(diào)用函數(shù)傳遞結(jié)構(gòu)型數(shù)據(jù)。返回結(jié)構(gòu)變量
的函數(shù)稱(chēng)為結(jié)構(gòu)型函數(shù),屬于基本類(lèi)型函數(shù);返回結(jié)
構(gòu)指針的函數(shù)稱(chēng)為結(jié)構(gòu)指針型函數(shù),屬于指針型函數(shù)o①
結(jié)構(gòu)型函數(shù)說(shuō)明或定義結(jié)構(gòu)型函數(shù)的一般形式為:struct
結(jié)構(gòu)標(biāo)識(shí)符函數(shù)名(形參表)例如,struct
student
function(int
x,int
y){......}就定義了一個(gè)struct
student結(jié)構(gòu)類(lèi)型的函數(shù),它可以將一個(gè)
結(jié)構(gòu)變量返回到調(diào)用函數(shù)。②
結(jié)構(gòu)指針型函數(shù)說(shuō)明或定義結(jié)構(gòu)指針型函數(shù)的一般形式為:struct結(jié)構(gòu)名*函數(shù)名(形參表)例如,struct
student
*function(int
x,int
y){
......}定義了一個(gè)結(jié)構(gòu)指針型函數(shù)function(),它可以將一
個(gè)結(jié)構(gòu)指針?lè)祷氐秸{(diào)用函數(shù)。結(jié)構(gòu)類(lèi)型數(shù)據(jù)在函數(shù)間的傳遞1、用結(jié)構(gòu)變量的成員作參數(shù)—
值傳遞2
、用指向結(jié)構(gòu)變量或數(shù)組的指針作參數(shù)—
地址傳遞3
、用結(jié)構(gòu)變量作參數(shù)--多值傳遞(效率低)小結(jié)結(jié)構(gòu)體聲明及結(jié)構(gòu)體類(lèi)型變量的定義、初始化(a)結(jié)構(gòu)體類(lèi)型的定義形式注意的問(wèn)題:①
每個(gè)成員都必須有自己的數(shù)據(jù)類(lèi)型,位置上連續(xù)同類(lèi)型的結(jié)構(gòu)成員可
以出現(xiàn)在一條語(yǔ)句中,并共用同一個(gè)類(lèi)型關(guān)鍵字。②
結(jié)構(gòu)類(lèi)型的成員可以是基本數(shù)據(jù)類(lèi)型的變量、數(shù)組或指針,也可以是已定義
結(jié)構(gòu)類(lèi)型的變量、數(shù)組或指針。③
結(jié)構(gòu)成員可以和程序中其他標(biāo)識(shí)符同名,也可以和另一個(gè)結(jié)構(gòu)的成員同名。④
結(jié)構(gòu)類(lèi)型定義的位置,可以在函數(shù)內(nèi)部,也可以在函數(shù)外部。在
函數(shù)內(nèi)部定義的結(jié)構(gòu)類(lèi)型,只能在函數(shù)內(nèi)部使用。在函數(shù)外部定
義的結(jié)構(gòu)類(lèi)型,其有效范圍是從定義處開(kāi)始,直到它所在的源程
序文件結(jié)束。(b)結(jié)構(gòu)體變量的說(shuō)明——三種方法。(c)結(jié)構(gòu)體變量的初始化小結(jié)結(jié)構(gòu)體變量成員的引用(a)同一類(lèi)型的結(jié)構(gòu)體變量可相互賦值(b)引用結(jié)構(gòu)體成員(在無(wú)嵌套的情況下,訪問(wèn)結(jié)構(gòu)成員的方法)若已定義了一個(gè)結(jié)構(gòu)變量及指向它的指針,可以用以下三種形式訪
問(wèn)該結(jié)構(gòu)變量的成員:①結(jié)構(gòu)變量名.成員名、②結(jié)構(gòu)指針名->成員名、③(*結(jié)構(gòu)指針名
).成員名(c)結(jié)構(gòu)體變量的賦值、輸入和輸出(d)結(jié)構(gòu)數(shù)組的賦值、輸入和輸出
(e)結(jié)構(gòu)類(lèi)型數(shù)據(jù)在函數(shù)間的傳遞用遞歸結(jié)構(gòu)處理鏈表1.遞歸結(jié)構(gòu)如果一個(gè)結(jié)構(gòu)類(lèi)型的某些成員是該結(jié)構(gòu)類(lèi)型的變量、數(shù)
組或指針,稱(chēng)之為遞歸結(jié)構(gòu),也叫自嵌套結(jié)構(gòu)。使用最
多的遞歸結(jié)構(gòu)是:結(jié)構(gòu)的一個(gè)成員是指同本結(jié)構(gòu)類(lèi)型的指針。例如:struct
node{int
data;struct
node
*next;這種遞歸結(jié)構(gòu)在處理諸如鏈表這樣數(shù)據(jù)結(jié)構(gòu)時(shí)特別有用2.鏈表的概念鏈表是一種很有用的動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),單向鏈表是一種最簡(jiǎn)單
的鏈表,它由若干個(gè)節(jié)點(diǎn)首尾相接而成,每個(gè)節(jié)點(diǎn)有兩個(gè)域
:數(shù)據(jù)域data存放數(shù)據(jù),指針域next存放下一節(jié)點(diǎn)的首地
址。鏈頭指針
節(jié)點(diǎn)1
節(jié)點(diǎn)2
節(jié)點(diǎn)3
鏈尾單向鏈表中的節(jié)點(diǎn)可用如下遞歸結(jié)構(gòu)來(lái)描述:struct
node{
int
data;struct
node
*next;};通過(guò)指針將各個(gè)節(jié)點(diǎn)鏈接起來(lái),就構(gòu)成單向鏈表。headdatanextdata
data
datanext
nextNLL3.動(dòng)態(tài)鏈表的基本操作動(dòng)態(tài)鏈表的特點(diǎn)是各節(jié)點(diǎn)所需要的存儲(chǔ)空間是用動(dòng)態(tài)內(nèi)存分
配的方式獲得的,每個(gè)節(jié)點(diǎn)都沒(méi)有名字,對(duì)鏈表的操作只
能通過(guò)指針進(jìn)行。動(dòng)態(tài)鏈表的主要操作包括建立鏈表、刪
除節(jié)點(diǎn)、插入節(jié)點(diǎn)和鏈表的輸出。①
建立鏈表建立鏈表的過(guò)程是先建立鏈表的頭節(jié)點(diǎn),并將該頭節(jié)點(diǎn)作為尾節(jié)點(diǎn),然后不斷增加新節(jié)點(diǎn),將新增的節(jié)點(diǎn)連接
在當(dāng)前尾節(jié)點(diǎn)的后面而作為新的尾節(jié)點(diǎn)。為此,需要設(shè)
置三個(gè)指針,
h指向鏈表的頭節(jié)點(diǎn),
p指向新建節(jié)點(diǎn),q
指向
尾節(jié)點(diǎn)。hdata
next
data
nextTp
(新建節(jié)點(diǎn))建立鏈表的算法(1)通過(guò)動(dòng)態(tài)內(nèi)存分配申請(qǐng)一段存儲(chǔ)空間存放頭節(jié)點(diǎn),將該存儲(chǔ)空
間的起始地址存放在指針h中,且其數(shù)據(jù)域和指針域均為空并使p
和q同時(shí)指向頭節(jié)點(diǎn),表示該節(jié)點(diǎn)既是頭節(jié)點(diǎn)、也
是當(dāng)前節(jié)點(diǎn)、又是尾節(jié)點(diǎn);(2)輸入一個(gè)數(shù)a;(3)若a為0,則進(jìn)入⑥;否則,進(jìn)入④;(4),再申請(qǐng)一段空間存放下一個(gè)新建節(jié)點(diǎn),起始地址存放在指
針p中,稱(chēng)之為p節(jié)點(diǎn)。將數(shù)a存入p節(jié)點(diǎn)的data域,并將p節(jié)點(diǎn)
的首地址存入q節(jié)點(diǎn)的next域,這樣,p節(jié)點(diǎn)就被鏈接在q節(jié)
點(diǎn)之后。再通過(guò)將首地址p存入指針q使新建節(jié)點(diǎn)成為新的
尾節(jié)點(diǎn)。(5)繼續(xù)輸入下一個(gè)數(shù)a,
返回③;(6)結(jié)束循環(huán),并在尾節(jié)點(diǎn)的next域放入NULL,
作為鏈表結(jié)束的標(biāo)記;(7)將鏈表的頭指針h返回調(diào)用函數(shù)。②
輸出鏈表輸出鏈表的過(guò)程是根據(jù)鏈表的頭節(jié)點(diǎn)找到下一個(gè)節(jié)點(diǎn),先輸
出其data域中的數(shù)據(jù),然后根據(jù)其next域中的地址,取出后繼節(jié)點(diǎn),輸出其data域中的數(shù)據(jù)。如此不斷選取下一個(gè)節(jié)點(diǎn),
直到鏈表末尾。輸出鏈表的算法(1)根據(jù)調(diào)用程序傳遞來(lái)的鏈表首地址找到該鏈表的頭節(jié)點(diǎn)1(2)由頭節(jié)點(diǎn)next域中的地址找到下一個(gè)節(jié)點(diǎn)p;(3)若節(jié)點(diǎn)p的next域中的地址值不是NULL,
則進(jìn)入下一步;否則,進(jìn)入⑤;(4),輸出節(jié)點(diǎn)p的data域中的數(shù)據(jù),并由該節(jié)點(diǎn)next域中的地址
找到下一個(gè)節(jié)點(diǎn),回到③;(5)返回調(diào)用函數(shù)。P244
【例7.7】先建立一個(gè)單向鏈表,將鍵盤(pán)輸入的整數(shù)1、2、
3、4、5、6、7、8、9、10依次存入該鏈表各個(gè)節(jié)點(diǎn)的數(shù)據(jù)
域中,當(dāng)輸入整數(shù)0時(shí),結(jié)束建立鏈表的操作。然后依次
輸出鏈表中的數(shù)據(jù),直到鏈表末尾。用一個(gè)結(jié)構(gòu)指針型
函數(shù)creatlist()來(lái)建立鏈表,以便將該鏈表的頭指針?lè)祷?/p>
調(diào)用函數(shù)。在函數(shù)creatlist()中先申請(qǐng)頭書(shū)點(diǎn)的存儲(chǔ)空間,
用指針h
存放該空間的首地址;然后不斷申請(qǐng)下一個(gè)節(jié)點(diǎn)的存
儲(chǔ)空間,其d
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度市政道路施工人工費(fèi)結(jié)算合同
- 2025年度建筑工程施工安全生產(chǎn)監(jiān)督返費(fèi)合同
- 2025年度文化創(chuàng)意產(chǎn)品開(kāi)發(fā)借款借據(jù)合同范本
- 欽州2025年廣西欽州市事業(yè)單位招聘893人筆試歷年參考題庫(kù)附帶答案詳解
- 莆田2025年福建莆田市涵江區(qū)區(qū)直事業(yè)單位招聘研究生5人筆試歷年參考題庫(kù)附帶答案詳解
- 安全生產(chǎn)三項(xiàng)制度
- 漯河2024年河南漯河市城市管理局所屬事業(yè)單位人才引進(jìn)13人筆試歷年參考題庫(kù)附帶答案詳解
- 昆明云南昆明市晉寧區(qū)六街鎮(zhèn)中心幼兒園招聘編外工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 2025年中國(guó)雙眼脈沖爐市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)三字扣市場(chǎng)調(diào)查研究報(bào)告
- 真需求-打開(kāi)商業(yè)世界的萬(wàn)能鑰匙
- 暑假假期安全教育(課件)-小學(xué)生主題班會(huì)
- 費(fèi)曼學(xué)習(xí)法費(fèi)曼學(xué)習(xí)法
- (完整版)漢密爾頓焦慮量表(HAMA)
- 電力電子技術(shù)全套課件
- 編外人員錄用審批表
- 倪海廈《天紀(jì)》講義
- 建設(shè)年飼養(yǎng)240萬(wàn)只蛋雛雞培育基地項(xiàng)目可行性研究報(bào)告
- 黃金太陽(yáng)漆黑的黎明金手指
- 車(chē)間、設(shè)備改造項(xiàng)目建議書(shū)范文
- 化學(xué)成份及性能對(duì)照表新
評(píng)論
0/150
提交評(píng)論