新教科版-高一信息技術(shù)-32-數(shù)據(jù)與結(jié)構(gòu)(二課時(shí))課件_第1頁
新教科版-高一信息技術(shù)-32-數(shù)據(jù)與結(jié)構(gòu)(二課時(shí))課件_第2頁
新教科版-高一信息技術(shù)-32-數(shù)據(jù)與結(jié)構(gòu)(二課時(shí))課件_第3頁
新教科版-高一信息技術(shù)-32-數(shù)據(jù)與結(jié)構(gòu)(二課時(shí))課件_第4頁
新教科版-高一信息技術(shù)-32-數(shù)據(jù)與結(jié)構(gòu)(二課時(shí))課件_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

3.2數(shù)據(jù)與結(jié)構(gòu)3.2數(shù)據(jù)與結(jié)構(gòu)1學(xué)習(xí)目標(biāo)3.能比較不同數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),會(huì)選用合適的數(shù)據(jù)結(jié)構(gòu)組織數(shù)據(jù)解決簡(jiǎn)單問題。2.了解樹、圖結(jié)構(gòu)的基本概念及特點(diǎn)。1.熟悉隊(duì)列結(jié)構(gòu)的概念和特點(diǎn),能夠使用python語言對(duì)隊(duì)列進(jìn)行操作。學(xué)習(xí)目標(biāo)3.能比較不同數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),會(huì)選用合適的數(shù)據(jù)2各種類型的數(shù)據(jù)被編碼表示成二進(jìn)制數(shù)據(jù),存儲(chǔ)到計(jì)算機(jī)中。在利用計(jì)算機(jī)解決問題的過程中,這些數(shù)據(jù)將是最基本的元素。但是,零散孤立的數(shù)據(jù)是很難被有效利用的。根據(jù)所要解決的問題的不同,我們還需要依據(jù)數(shù)據(jù)關(guān)系建立合適的結(jié)構(gòu)。采用這些結(jié)構(gòu)將數(shù)據(jù)組織起來,才能有利于操作和管理,進(jìn)而更高效地解決實(shí)際問題。

本節(jié)我們將學(xué)習(xí)表、隊(duì)列、樹、圖等數(shù)據(jù)結(jié)構(gòu),了解結(jié)構(gòu)中數(shù)據(jù)間的關(guān)系,在一定的結(jié)構(gòu)上完成算法設(shè)計(jì);學(xué)會(huì)在生活中根據(jù)實(shí)際問題,建立合適的數(shù)據(jù)結(jié)構(gòu),進(jìn)而運(yùn)用所學(xué)的知識(shí)解決問題。各種類型的數(shù)據(jù)被編碼表示成二進(jìn)制數(shù)據(jù),存儲(chǔ)到計(jì)3

閱讀教材第56頁至57頁任務(wù)一的活動(dòng)1“了解訂單數(shù)據(jù)”,填寫表3.2.1.(P31)網(wǎng)站名稱訂單中的數(shù)據(jù)Python中對(duì)應(yīng)的數(shù)據(jù)類型A網(wǎng)站商品名稱字符串單價(jià)浮點(diǎn)型數(shù)量整型B網(wǎng)站商品名稱字符型數(shù)量整型價(jià)格浮點(diǎn)型數(shù)據(jù)類型閱讀教材第56頁至57頁任務(wù)一的4數(shù)據(jù)類型簡(jiǎn)單數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型簡(jiǎn)單數(shù)據(jù)類型不能分解成更小的數(shù)據(jù)類型。如:整型(int)、浮點(diǎn)型(float)、字符串(str)、布爾型(bool)。復(fù)合數(shù)據(jù)類型則由簡(jiǎn)單數(shù)據(jù)類型組成。如:元組(tuple)、集合(set)、列表(list)、字典(dict)。數(shù)據(jù)類型數(shù)據(jù)類型簡(jiǎn)單數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型簡(jiǎn)單數(shù)據(jù)類型不能分解成更小的5一、數(shù)據(jù)類型認(rèn)識(shí)Python簡(jiǎn)單數(shù)據(jù)類型

在Python語言中,簡(jiǎn)單數(shù)據(jù)類型有整數(shù)(int)、浮點(diǎn)數(shù)(float)、字符串(str)、布爾(bool)、復(fù)數(shù)(complex)等數(shù)據(jù)類型。①整數(shù)(int)用來表示整數(shù)數(shù)值,就是沒有小數(shù)部分的數(shù)值。在Python中,整數(shù)包括正整數(shù)、負(fù)整數(shù)和0,并且它的位數(shù)是任意的,主要用來進(jìn)行數(shù)學(xué)運(yùn)算

。②浮點(diǎn)數(shù)(float)浮點(diǎn)數(shù)由整數(shù)部分和小數(shù)部分組成,主要用于處理包括小數(shù)的數(shù)。一、數(shù)據(jù)類型認(rèn)識(shí)Python簡(jiǎn)單數(shù)據(jù)類型在Python語言6③字符串(str)在Python中,加了引號(hào)的字符都被認(rèn)為是字符串,其聲明有三種方式,分別是:?jiǎn)我?hào)、雙引號(hào)和三引號(hào),這三種引號(hào)形式在語義上沒有差別,只是在形式上有些差別,其中單引號(hào)和雙引號(hào)中的字符序列必須在一行上,而三引號(hào)內(nèi)的字符序列可以分布在連續(xù)的行上。④布爾(bool)和其他編程語言一樣,Python布爾類型也是用于邏輯運(yùn)算,有兩個(gè)值:True(真)和False(假)。在Python中的布爾值可以轉(zhuǎn)化為數(shù)值,其中True表示1,F(xiàn)alse表示0。③字符串(str)在Python中,加了引號(hào)的字符都被認(rèn)為是7>>>type(8)#type()函數(shù)返回?cái)?shù)據(jù)的類型<class‘int’>#返回’int’類型>>>type(3.14)<class‘float’>#返回’float’類型>>>type(‘Thankyou!’)<class‘str’>#返回’str’類型>>>type(True)<class‘bool’>#返回’bool’類型數(shù)據(jù)類型——簡(jiǎn)單數(shù)據(jù)類型>>>type(8)#ty8Python語言中,復(fù)合數(shù)據(jù)類型有元組(tuple)、集合(set)、列表(dict)等。元組BookInfo0=(“Id0010230,15.68,36”)BookInfo1=(“Id2315937,20,2”)

>>>bookinfo0=('id0010230',15.58,36)>>>type(bookinfo0)<class'tuple'>>>>>>>bookinfo1=('id2315937',20,2)>>>bookinfo1[1]20數(shù)據(jù)類型——復(fù)合數(shù)據(jù)類型Python語言中,復(fù)合數(shù)據(jù)類型有元組(tuple)、集合(9集合Bookset={bookinfo0,bookinfo1}>>>bookinfo0=('id0010230',15.68,36)>>>bookinfo1=('id2315937',20,2)>>>bookset={bookinfo0,bookinfo1}>>>type(bookset)<class'set'>>>>列表Booklist=[bookinfo0,bookinfo1]>>>bookinfo0=('id0010230',15.68,36)>>>bookinfo1=('id2315937,20,2')>>>booklist=[bookinfo0,bookinfo1]>>>type(booklist)<class'list'>>>>——復(fù)合數(shù)據(jù)類型數(shù)據(jù)類型集合>>>bookinfo0=('id0010230',110一、數(shù)據(jù)類型Python復(fù)合數(shù)據(jù)類型某用戶預(yù)訂的商品編號(hào)為ID0010230、單價(jià)為15.68元,數(shù)量為36,可將這3個(gè)不同類型的簡(jiǎn)單數(shù)據(jù)組織成“元組”復(fù)合數(shù)據(jù)類型:>>>BookInfo0=('ID0010230',15.68,36)>>>type(BookInfo0)<class'tuple'>#返回元組類型另一用戶預(yù)訂的商品編號(hào)為ID2315937、單價(jià)為20元,數(shù)量為2,可記作:>>>BookInfo1=('ID2315937',20,2)>>>BookInfo1[1]20#返回元組BookInfo1中索引為1的項(xiàng)的值在Python語言中,復(fù)合數(shù)據(jù)類型有元組(tuple)、集合(set)、列表(list)、字典(dict)等①元組

一、數(shù)據(jù)類型Python復(fù)合數(shù)據(jù)類型某用戶預(yù)訂的商品編號(hào)為I11一、數(shù)據(jù)類型訂單匯總,可以定義為一個(gè)集合(集合里的項(xiàng)稱為元素,彼此之間沒有順序):>>>BookSet={BookInfo0,BookInfo1}>>>type(BookSet)<class'set'>#返回集合類型>>>BookSet{('ID2315937',20,2),('ID0010230',15.68,36)}#返回集合的值>>>BookInfo0inBookSet#測(cè)試元素BookInfo0是否屬于集合BookSetTrue#返回邏輯真②集合一、數(shù)據(jù)類型訂單匯總,可以定義為一個(gè)集合(集合里的項(xiàng)稱為元素12訂單匯總,也可以按訂單產(chǎn)生的先后順序組成一個(gè)列表(列表里的項(xiàng)是有順序編號(hào)的):>>>BookList=[BookInfo0,BookInfo1]>>>type(BookList)<class'list'>#返回列表類型>>>BookList[0]('ID0010230',15.68,36)>>>BookList[1]('ID2315937',20,2)>>>BookList[0][1]*BookList[0][2]+BookList[1][1]*BookList[1][2]604.48#返回計(jì)算結(jié)果③列表訂單匯總,也可以按訂單產(chǎn)生的先后順序組成一個(gè)列表(列表里的項(xiàng)13是Python中標(biāo)準(zhǔn)數(shù)據(jù)類型之一,它也是容器類型,可以存儲(chǔ)不同的數(shù)據(jù),并且具有可變性。字典顧名思義,就是擁有類似字典的特性,通過“鍵”能夠快速查找對(duì)應(yīng)的“值”。這種基本的數(shù)據(jù)結(jié)構(gòu)稱為“鍵值對(duì)”。廣義上來說,其他標(biāo)準(zhǔn)數(shù)據(jù)類型中也存在“鍵值對(duì)”,只是它們的鍵只能是索引號(hào),而字典的鍵可以是不可變的數(shù)據(jù)類型(數(shù)字、字符串和元組)。實(shí)例1tel=dict([('sape',4139),('guido',4127),('jack',4098)])print(tel)#輸出結(jié)果為:{'sape':4139,'guido':4127,'jack':4098}#會(huì)發(fā)現(xiàn)直接轉(zhuǎn)化成字典。key:value實(shí)例2tec={x:x**2forxin(2,4,6)}print(tec)#輸出結(jié)果{2:4,4:16,6:36}④字典(dictionary)是Python中標(biāo)準(zhǔn)數(shù)據(jù)類型之一,它也是容器類型,可以存儲(chǔ)不14實(shí)例3knights={'Apollo':'theBrave','Prothemeus':'theugly'}fork,vinknights.items():print(k,'---->',v)#輸出結(jié)果Apollo---->theBraveProthemeus---->theugly實(shí)例4fori,vinenumerate(['tick','Dida','Mouo']):print(i,v)#enumerate()函數(shù)返回的是列表中的索引與鍵值#輸出結(jié)果0tick1Dida2Mouo實(shí)例5questions=['name','quest','favoriatecolor']answers=['lacelot','theholygrail','blue']forq,vinzip(questions,answers):print('Whatisyour{0}?Itis{1}.'.format(q,v))#通過zip函數(shù)把兩個(gè)不相關(guān)的序列,弄成一組#輸出結(jié)果為:Whatisyourname?Itislacelot.Whatisyourquest?Itistheholygrail.Whatisyourfavoriatecolor?Itisblue.實(shí)例315數(shù)據(jù)類型轉(zhuǎn)換:函數(shù)格式使用示例描述int(x[,base])int("8")

可以轉(zhuǎn)換的包括String類型和其他數(shù)字類型,但是會(huì)丟失精度

float(x)

float(1)/float("1")

可以轉(zhuǎn)換String和其他數(shù)字類型,不足的位數(shù)用0補(bǔ)齊,例如1會(huì)變成1.0

complex(real,imag)

complex("1")/complex(1,2)

第一個(gè)參數(shù)可以是String或者數(shù)字,第二個(gè)參數(shù)只能為數(shù)字類型,第二個(gè)參數(shù)沒有時(shí)默認(rèn)為0

str(x)

str(1)

將數(shù)字轉(zhuǎn)化為String

repr(x)

repr(Object)

返回一個(gè)對(duì)象的String格式

eval(str)

eval("12+23")

執(zhí)行一個(gè)字符串表達(dá)式,返回計(jì)算的結(jié)果,如例子中返回35

list(s)

list((1,2,3,4))

將序列轉(zhuǎn)變成一個(gè)列表,參數(shù)可為元組、字典、列表,為字典時(shí),返回字典的key組成的集合

chr(x)

chr(0x30)

chr()用一個(gè)范圍在range(256)內(nèi)的(就是0~255)整數(shù)作參數(shù),返回一個(gè)對(duì)應(yīng)的字符。返回值是當(dāng)前整數(shù)對(duì)應(yīng)的ascii字符。

ord(x)

ord('a')

返回對(duì)應(yīng)的ASCII數(shù)值,或者Unicode數(shù)值

hex(x)

hex(12)

把一個(gè)整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串

oct(x)

oct(12)

把一個(gè)整數(shù)轉(zhuǎn)換為八進(jìn)制字符串?dāng)?shù)據(jù)類型轉(zhuǎn)換:函數(shù)格式使用示例描述int(x[,base]16編制訂單數(shù)據(jù)處理程序網(wǎng)店接受了大量的訂單,如何安排發(fā)貨呢?實(shí)際上,網(wǎng)店在處理訂單時(shí),一般采取“先下單,先發(fā)貨”的原則。因此,所有的訂單將按照下單的時(shí)間順序放進(jìn)一個(gè)列表中,先放進(jìn)去的先發(fā)貨,所有訂單排列在一起,像是一群人在排隊(duì)。

下面的Python程序可以實(shí)現(xiàn)以下功能:提供“添加訂單”“發(fā)貨”“查看訂單列表”“退出”四個(gè)操作選項(xiàng)。當(dāng)我們選擇“1”后輸入訂單數(shù)據(jù),程序?qū)⒂唵螖?shù)據(jù)添加到訂單數(shù)據(jù)表中;選擇“2”后,程序?qū)?dāng)前訂單列表中最早進(jìn)入的數(shù)據(jù)刪除(表示已安排發(fā)貨處理);選擇“3”可以顯示當(dāng)前訂單列表中所有的訂單數(shù)據(jù);選擇“4”將結(jié)束運(yùn)行。請(qǐng)你完善下列Python程序,模擬添加訂單和發(fā)貨的過程,了解訂單列表的操作過程。編制訂單數(shù)據(jù)處理程序網(wǎng)店接受了大量的訂單,如何17編制訂單數(shù)據(jù)處理程序listque=[] #定義列表listque存儲(chǔ)訂單x=0while(x!=4): #當(dāng)x=!4時(shí),執(zhí)行循環(huán)

print('1.添加訂單')print('2.發(fā)貨')print('3.查看訂單列表')print('4.退出')x=int(input("輸入你的選擇:")) #輸入選擇項(xiàng)

ifx==1:y=input("輸入訂單編號(hào):") #輸入訂單編號(hào)

listque.append(y) #在列表listque中添加訂單號(hào)

elifx==2:iflen(listque)==0: #如果訂單列表為空

print("訂單列表為空")else:print("發(fā)貨單號(hào):"+listque.pop(0))

elifx==3:print("等待發(fā)貨:",listque) #查詢列表listque中的訂單號(hào)

print()input("運(yùn)行完畢,請(qǐng)按回車鍵退出...")訂單處理程序數(shù)據(jù)類型編制訂單數(shù)據(jù)處理程序listque=[]18數(shù)據(jù)結(jié)構(gòu):存在特定關(guān)系的數(shù)據(jù)元素的集合。常用的數(shù)據(jù)結(jié)構(gòu)有:數(shù)組,棧,鏈表,隊(duì)列,樹,圖,堆,散列表等數(shù)據(jù)結(jié)構(gòu)也稱邏輯結(jié)構(gòu):集合結(jié)構(gòu)、線性結(jié)構(gòu)、樹結(jié)構(gòu)、圖結(jié)構(gòu)(網(wǎng)狀結(jié)構(gòu))數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu):存在特定關(guān)系的數(shù)據(jù)元素的集合。數(shù)據(jù)結(jié)構(gòu)也稱邏輯結(jié)19數(shù)據(jù)結(jié)構(gòu)

——線性數(shù)據(jù)結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)又稱線性表。特點(diǎn):除首元素沒有前驅(qū)元素、尾元素沒有后繼元素外,其它元素都只有一個(gè)前驅(qū)元素和一個(gè)后繼元素。數(shù)據(jù)元素之間是一對(duì)一的關(guān)系。數(shù)據(jù)結(jié)構(gòu)——線性數(shù)據(jù)結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)又稱線性表。20常見的線性數(shù)據(jù)結(jié)構(gòu)(1)棧常見的線性結(jié)構(gòu)有:棧、隊(duì)列和串等都屬于線性結(jié)構(gòu)。棧是一種特殊的線性表,僅能在線性表的一端操作,棧頂允許操作,棧底不允許操作。棧的特點(diǎn)是:先進(jìn)后出,或者說是后進(jìn)先出,從棧頂放入元素的操作叫入棧,取出元素叫出棧。常見的線性數(shù)據(jù)結(jié)構(gòu)(1)棧常見的線性結(jié)構(gòu)有:棧、隊(duì)列和串等21隊(duì)列與棧一樣,也是一種線性表,不同的是,隊(duì)列可以在一端添加元素,在另一端取出元素,也就是:先進(jìn)先出。從一端放入元素的操作稱為入隊(duì),取出元素為出隊(duì),示例圖如下:

(2)隊(duì)列典型的例子如超市里排隊(duì)付款的隊(duì)伍。隊(duì)列與棧一樣,也是一種線性表,不同的是,隊(duì)列可以在一端添加元22隊(duì)列是一種有限制的線性結(jié)構(gòu)。特點(diǎn):數(shù)據(jù)元素只能在一端依次添加(進(jìn)隊(duì)),在另一端依次刪除(出隊(duì))。隊(duì)列在Python中,用列表實(shí)現(xiàn)隊(duì)列的創(chuàng)建;隊(duì)列的基本操作:入隊(duì),出隊(duì),求隊(duì)長(zhǎng),判隊(duì)空。

——隊(duì)列數(shù)據(jù)結(jié)構(gòu)隊(duì)列是一種有限制的線性結(jié)構(gòu)。隊(duì)列在Python中,用列表實(shí)現(xiàn)23隊(duì)列的計(jì)算機(jī)實(shí)現(xiàn):在Python中,隊(duì)列一般用列表(list)實(shí)現(xiàn),常用操作:q=[]#定義空列表qq.append(x)#元素x入隊(duì)(添加)q.pop(0)#返回隊(duì)首元素,隊(duì)首元素出隊(duì)(刪除)

len(q)#返回隊(duì)列q的長(zhǎng)度(元素個(gè)數(shù))q[i]#返回列表q中索引(index)為i的元素.索引有2套編號(hào)方式:

正編號(hào)(從左到右編號(hào)依次為0,1,2,…)和負(fù)編號(hào)(從右到左編

號(hào)依次為-1,-2,-3,…)數(shù)據(jù)結(jié)構(gòu)

——隊(duì)列隊(duì)列的計(jì)算機(jī)實(shí)現(xiàn):在Python中,隊(duì)列一般用列表(list24閱讀教材

“探究快遞配送過程”的活動(dòng)1,了解快遞派送線路,完成P60的連點(diǎn)成樹。派送點(diǎn)學(xué)校收發(fā)室某單位傳達(dá)室收件人A同學(xué)收件人B同學(xué)職工小王職工小李A(yù)BCDEFG數(shù)據(jù)結(jié)構(gòu)

——樹結(jié)構(gòu)閱讀教材“探究快遞配送過程”的活動(dòng)1,了解快遞派送線路,25樹的遞歸定義如下:樹是由n(n>=0)個(gè)節(jié)點(diǎn)組成的有限集合。若n=0,則稱為空樹。任何一個(gè)非空樹均滿足以下二個(gè)條件:(1)僅有一個(gè)根節(jié)點(diǎn)。(2)當(dāng)n>0時(shí),其余節(jié)點(diǎn)可分為m(m>=0)個(gè)互不相交的有限集合,其中每個(gè)集合又是一棵樹,并稱為根的子樹。特點(diǎn):數(shù)據(jù)元素之間是一對(duì)多的關(guān)系。數(shù)據(jù)結(jié)構(gòu)樹結(jié)構(gòu)是一種具有層次關(guān)系的非線性結(jié)構(gòu)。

——樹結(jié)構(gòu)樹的遞歸定義如下:樹是由n(n>=0)個(gè)節(jié)點(diǎn)組成的有限集合。26樹結(jié)構(gòu)樹是一種具有層次關(guān)系的非線性數(shù)據(jù)結(jié)構(gòu)樹結(jié)構(gòu)樹是一種具有層次關(guān)系的非線性數(shù)據(jù)結(jié)構(gòu)27快遞到達(dá)目的地城市后,物流圖的結(jié)構(gòu)呈樹狀快遞到達(dá)目的地城市后,物流圖的結(jié)構(gòu)呈樹狀28了解物流網(wǎng)絡(luò)了解物流網(wǎng)絡(luò)29岳陽市長(zhǎng)沙市南通市南京泰州市揚(yáng)州市了解物流網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)

——圖結(jié)構(gòu)岳陽市長(zhǎng)沙市南通市南京泰州市揚(yáng)州市了解物流網(wǎng)絡(luò)數(shù)30圖結(jié)構(gòu)結(jié)構(gòu)是由--組節(jié)點(diǎn)(稱為頂點(diǎn))和--組節(jié)點(diǎn)間的連線(稱為邊或弧)構(gòu)成的一種數(shù)據(jù)結(jié)構(gòu)。圖結(jié)構(gòu)中的每個(gè)頂點(diǎn)都可以與其他頂點(diǎn)有邊相連,圖結(jié)構(gòu)中數(shù)據(jù)元素之間是多對(duì)多的關(guān)系。圖3.2.6表示的是商品從供貨點(diǎn)到收貨點(diǎn)的派送過程的圖結(jié)構(gòu)。圖3.2.7也是--個(gè)圖結(jié)構(gòu),其中,標(biāo)為(4“1”的頂點(diǎn)與兩條邊相連,頂點(diǎn)“4”與“2”“8”“9”相連。在物流網(wǎng)絡(luò)中,分撥中心、配送中心、貨物需求點(diǎn)等可以抽象為圖的頂點(diǎn),城市道路、各級(jí)鐵路等可以抽象為圖的邊,如城市以及城市之間的運(yùn)輸?shù)缆肪褪菆D結(jié)構(gòu)。利用圖結(jié)構(gòu),我們還可以解決物流中的許多問題,如道路網(wǎng)絡(luò)分析、車輛運(yùn)營(yíng)安排等。圖結(jié)構(gòu)結(jié)構(gòu)是由--組節(jié)點(diǎn)(稱為頂點(diǎn))和--組31圖結(jié)構(gòu)是由一組節(jié)點(diǎn)(稱為頂點(diǎn))和一組節(jié)點(diǎn)間的連線(稱為邊或?。瑯?gòu)成的一種數(shù)據(jù)結(jié)構(gòu)。特點(diǎn):圖結(jié)構(gòu)中的每個(gè)頂點(diǎn)都可以與其他頂點(diǎn)有邊相連,數(shù)據(jù)元素之間是多對(duì)多的關(guān)系。數(shù)據(jù)結(jié)構(gòu)

——圖結(jié)構(gòu)①②③④⑤⑥

所有的頂點(diǎn)構(gòu)成一個(gè)頂點(diǎn)集合,所有的邊構(gòu)成邊的集合,一個(gè)完整的圖結(jié)構(gòu)就是由頂點(diǎn)集合和邊集合組成。圖結(jié)構(gòu)在數(shù)學(xué)上記為以下形式:

G=(V,E)或者G=(V(G),E(G))其中V(G)表示圖結(jié)構(gòu)所有頂點(diǎn)的集合,頂點(diǎn)可以用不同的數(shù)字或者字母來表示。E(G)是圖結(jié)構(gòu)中所有邊的集合,每條邊由所連接的兩個(gè)頂點(diǎn)來表示。圖結(jié)構(gòu)中頂點(diǎn)集合V(G)不能為空,必須包含一個(gè)頂點(diǎn),而圖結(jié)構(gòu)邊集合可以為空,表示沒有邊。圖結(jié)構(gòu)是由一組節(jié)點(diǎn)(稱為頂點(diǎn))和一組節(jié)點(diǎn)間的連線(稱為邊或弧32無向圖如果一個(gè)圖結(jié)構(gòu)中,所有的邊都沒有方向性,那么這種圖便稱為無向圖。典型的無向圖,如圖二所示。由于無向圖中的邊沒有方向性,這樣我們?cè)诒硎具叺臅r(shí)候?qū)蓚€(gè)頂點(diǎn)的順序沒有要求。例如頂點(diǎn)VI和頂點(diǎn)V5之間的邊,可以表示為(V2,V6),也可以表示為(V6,V2)。對(duì)于圖二無向圖,對(duì)應(yīng)的頂點(diǎn)集合和邊集合如下:

V(G)={V1,V2,V3,V4,V5,V6}

E(G)={(V1,V2),(V1,V3),(V2,V6),(V2,V5),(V2,V4),(V4,V3),(V3,V5),(V5,V6)}無向圖如果一個(gè)圖結(jié)構(gòu)中,所有的邊都沒有方向性,那么這種圖便稱33有向圖一個(gè)圖結(jié)構(gòu)中,邊是有方向性的,那么這種圖就稱為有向圖,如圖三所示。由于圖的邊有方向性,我們?cè)诒硎具叺臅r(shí)候?qū)蓚€(gè)頂點(diǎn)的順序就有要求。我們采用尖括號(hào)表示有向邊,例如<V2,V6>表示從頂點(diǎn)V2到頂點(diǎn)V6,而<V6,V2>表示頂點(diǎn)V6到頂點(diǎn)V2。對(duì)于有向圖,對(duì)應(yīng)的頂點(diǎn)集合和邊集合如下:

V(G)={V1,V2,V3,V4,V5,V6}

E(G)={<V2,V1>,<V3,V1>,<V4,V3>,<V4,V2>,<V3,V5>,<V5,V3>,<V2,V5>,<V6,V5>,<V2,V6>,<V6,V2>}有向圖一個(gè)圖結(jié)構(gòu)中,邊是有方向性的,那么這種圖就稱為有向圖,34

★快遞門店B

★快遞門店A家★

★快遞門店C地點(diǎn)——地點(diǎn)時(shí)間/分家--快遞門店A2家--快遞門店B5家--快遞門店C10A-B4A-C6B-C4該同學(xué)家及快遞店間步行所需時(shí)間表規(guī)劃取快遞最快路線數(shù)據(jù)結(jié)構(gòu)★★家★★地點(diǎn)——地點(diǎn)時(shí)間/分家-35數(shù)據(jù)結(jié)構(gòu)加權(quán)圖快遞門店A●快遞門店C●●家2610454規(guī)劃取快遞最快路線快遞門店B●【樸素算法】窮舉遍歷,依次列出所有可能走法。將圖中每個(gè)節(jié)點(diǎn)進(jìn)行編號(hào),編號(hào)互不相同:如作為根節(jié)點(diǎn)的“家”編號(hào)為“X”,其3個(gè)子節(jié)點(diǎn)(快遞門店A,快遞門店B,快遞門店C)分別編號(hào)為“A”“B”“C”,…,詳見下圖。數(shù)據(jù)結(jié)構(gòu)加權(quán)圖快遞門店A快遞門店C●2610454規(guī)劃取快遞36求解最短用時(shí)分析樹數(shù)據(jù)結(jié)構(gòu)【樸素算法】窮舉遍歷,依次列出所有可能走法如上圖將圖中每個(gè)節(jié)點(diǎn)進(jìn)行編號(hào),編號(hào)互不相同:如作為根節(jié)點(diǎn)的“家”編號(hào)為“X”,其3個(gè)子節(jié)點(diǎn)(快遞門店A,快遞門店B,快遞門店C)分別編號(hào)為“A”“B”“C”,…,詳見下圖。求解最短用時(shí)分析樹數(shù)據(jù)結(jié)構(gòu)【樸素算法】窮舉遍歷,依次列出所有37【算法演示1】求解最短時(shí)間(基于圖3.2.10的分析樹)【算法演示1】求解最短時(shí)間(基于圖3.2.10的分析樹)38【算法演示2】求解最短時(shí)間(直接對(duì)圖3.2.9進(jìn)行深度優(yōu)先遍歷)【算法演示2】求解最短時(shí)間(直接對(duì)圖3.2.9進(jìn)行深度優(yōu)先遍39練習(xí)人、狼、羊、菜過河問題:有一個(gè)人帶著一只狼、一只羊和一捆白菜,來到一條河邊,河邊只有一條小船,人每次過河最多只能帶一樣,如果人不在現(xiàn)場(chǎng),狼就要吃羊,羊就要吃菜。他應(yīng)該怎樣安排過河呢?請(qǐng)完成下面的“樹”結(jié)構(gòu)分析圖,幫他找到可行的過河方案。提示:可約定對(duì)象在左岸用0表示,在右岸用1表示。練習(xí)人、狼、羊、菜過河問題:有一個(gè)人帶著一只狼、一只羊和一捆40程序與調(diào)試程序與調(diào)試41結(jié)構(gòu)類型數(shù)據(jù)(節(jié)點(diǎn))之間的關(guān)系生活中相應(yīng)結(jié)構(gòu)應(yīng)用舉例隊(duì)列(線性)一對(duì)一排隊(duì)(上車、過馬路、付款)、醫(yī)院就診電子牌上的就診隊(duì)列樹一對(duì)多書的目錄結(jié)構(gòu)圖多對(duì)多全國(guó)航運(yùn)圖,鐵路運(yùn)輸圖數(shù)據(jù)結(jié)構(gòu)的比較結(jié)構(gòu)類型數(shù)據(jù)(節(jié)點(diǎn))之間生活中相應(yīng)結(jié)構(gòu)應(yīng)用舉例隊(duì)列一對(duì)一排隊(duì)42隊(duì)列是一種線性數(shù)據(jù)結(jié)構(gòu),本質(zhì)特征是FIFO。隊(duì)列在Python中,用列表實(shí)現(xiàn)隊(duì)列的創(chuàng)建;隊(duì)列的基本操作:入隊(duì),出隊(duì),求隊(duì)長(zhǎng),判隊(duì)空。樹結(jié)構(gòu)和圖結(jié)構(gòu)是兩種比較難的數(shù)據(jù)結(jié)構(gòu),我們應(yīng)領(lǐng)會(huì)其本質(zhì)特征,會(huì)用樹結(jié)構(gòu)和圖結(jié)構(gòu)對(duì)工作、學(xué)習(xí)、生活中的具體問題進(jìn)行抽象和分析,解決一些簡(jiǎn)單問題。課堂小結(jié)隊(duì)列是一種線性數(shù)據(jù)結(jié)構(gòu),本質(zhì)特征是FIFO。隊(duì)列在Pytho433.2數(shù)據(jù)與結(jié)構(gòu)3.2數(shù)據(jù)與結(jié)構(gòu)44學(xué)習(xí)目標(biāo)3.能比較不同數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),會(huì)選用合適的數(shù)據(jù)結(jié)構(gòu)組織數(shù)據(jù)解決簡(jiǎn)單問題。2.了解樹、圖結(jié)構(gòu)的基本概念及特點(diǎn)。1.熟悉隊(duì)列結(jié)構(gòu)的概念和特點(diǎn),能夠使用python語言對(duì)隊(duì)列進(jìn)行操作。學(xué)習(xí)目標(biāo)3.能比較不同數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),會(huì)選用合適的數(shù)據(jù)45各種類型的數(shù)據(jù)被編碼表示成二進(jìn)制數(shù)據(jù),存儲(chǔ)到計(jì)算機(jī)中。在利用計(jì)算機(jī)解決問題的過程中,這些數(shù)據(jù)將是最基本的元素。但是,零散孤立的數(shù)據(jù)是很難被有效利用的。根據(jù)所要解決的問題的不同,我們還需要依據(jù)數(shù)據(jù)關(guān)系建立合適的結(jié)構(gòu)。采用這些結(jié)構(gòu)將數(shù)據(jù)組織起來,才能有利于操作和管理,進(jìn)而更高效地解決實(shí)際問題。

本節(jié)我們將學(xué)習(xí)表、隊(duì)列、樹、圖等數(shù)據(jù)結(jié)構(gòu),了解結(jié)構(gòu)中數(shù)據(jù)間的關(guān)系,在一定的結(jié)構(gòu)上完成算法設(shè)計(jì);學(xué)會(huì)在生活中根據(jù)實(shí)際問題,建立合適的數(shù)據(jù)結(jié)構(gòu),進(jìn)而運(yùn)用所學(xué)的知識(shí)解決問題。各種類型的數(shù)據(jù)被編碼表示成二進(jìn)制數(shù)據(jù),存儲(chǔ)到計(jì)46

閱讀教材第56頁至57頁任務(wù)一的活動(dòng)1“了解訂單數(shù)據(jù)”,填寫表3.2.1.(P31)網(wǎng)站名稱訂單中的數(shù)據(jù)Python中對(duì)應(yīng)的數(shù)據(jù)類型A網(wǎng)站商品名稱字符串單價(jià)浮點(diǎn)型數(shù)量整型B網(wǎng)站商品名稱字符型數(shù)量整型價(jià)格浮點(diǎn)型數(shù)據(jù)類型閱讀教材第56頁至57頁任務(wù)一的47數(shù)據(jù)類型簡(jiǎn)單數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型簡(jiǎn)單數(shù)據(jù)類型不能分解成更小的數(shù)據(jù)類型。如:整型(int)、浮點(diǎn)型(float)、字符串(str)、布爾型(bool)。復(fù)合數(shù)據(jù)類型則由簡(jiǎn)單數(shù)據(jù)類型組成。如:元組(tuple)、集合(set)、列表(list)、字典(dict)。數(shù)據(jù)類型數(shù)據(jù)類型簡(jiǎn)單數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型簡(jiǎn)單數(shù)據(jù)類型不能分解成更小的48一、數(shù)據(jù)類型認(rèn)識(shí)Python簡(jiǎn)單數(shù)據(jù)類型

在Python語言中,簡(jiǎn)單數(shù)據(jù)類型有整數(shù)(int)、浮點(diǎn)數(shù)(float)、字符串(str)、布爾(bool)、復(fù)數(shù)(complex)等數(shù)據(jù)類型。①整數(shù)(int)用來表示整數(shù)數(shù)值,就是沒有小數(shù)部分的數(shù)值。在Python中,整數(shù)包括正整數(shù)、負(fù)整數(shù)和0,并且它的位數(shù)是任意的,主要用來進(jìn)行數(shù)學(xué)運(yùn)算

。②浮點(diǎn)數(shù)(float)浮點(diǎn)數(shù)由整數(shù)部分和小數(shù)部分組成,主要用于處理包括小數(shù)的數(shù)。一、數(shù)據(jù)類型認(rèn)識(shí)Python簡(jiǎn)單數(shù)據(jù)類型在Python語言49③字符串(str)在Python中,加了引號(hào)的字符都被認(rèn)為是字符串,其聲明有三種方式,分別是:?jiǎn)我?hào)、雙引號(hào)和三引號(hào),這三種引號(hào)形式在語義上沒有差別,只是在形式上有些差別,其中單引號(hào)和雙引號(hào)中的字符序列必須在一行上,而三引號(hào)內(nèi)的字符序列可以分布在連續(xù)的行上。④布爾(bool)和其他編程語言一樣,Python布爾類型也是用于邏輯運(yùn)算,有兩個(gè)值:True(真)和False(假)。在Python中的布爾值可以轉(zhuǎn)化為數(shù)值,其中True表示1,F(xiàn)alse表示0。③字符串(str)在Python中,加了引號(hào)的字符都被認(rèn)為是50>>>type(8)#type()函數(shù)返回?cái)?shù)據(jù)的類型<class‘int’>#返回’int’類型>>>type(3.14)<class‘float’>#返回’float’類型>>>type(‘Thankyou!’)<class‘str’>#返回’str’類型>>>type(True)<class‘bool’>#返回’bool’類型數(shù)據(jù)類型——簡(jiǎn)單數(shù)據(jù)類型>>>type(8)#ty51Python語言中,復(fù)合數(shù)據(jù)類型有元組(tuple)、集合(set)、列表(dict)等。元組BookInfo0=(“Id0010230,15.68,36”)BookInfo1=(“Id2315937,20,2”)

>>>bookinfo0=('id0010230',15.58,36)>>>type(bookinfo0)<class'tuple'>>>>>>>bookinfo1=('id2315937',20,2)>>>bookinfo1[1]20數(shù)據(jù)類型——復(fù)合數(shù)據(jù)類型Python語言中,復(fù)合數(shù)據(jù)類型有元組(tuple)、集合(52集合Bookset={bookinfo0,bookinfo1}>>>bookinfo0=('id0010230',15.68,36)>>>bookinfo1=('id2315937',20,2)>>>bookset={bookinfo0,bookinfo1}>>>type(bookset)<class'set'>>>>列表Booklist=[bookinfo0,bookinfo1]>>>bookinfo0=('id0010230',15.68,36)>>>bookinfo1=('id2315937,20,2')>>>booklist=[bookinfo0,bookinfo1]>>>type(booklist)<class'list'>>>>——復(fù)合數(shù)據(jù)類型數(shù)據(jù)類型集合>>>bookinfo0=('id0010230',153一、數(shù)據(jù)類型Python復(fù)合數(shù)據(jù)類型某用戶預(yù)訂的商品編號(hào)為ID0010230、單價(jià)為15.68元,數(shù)量為36,可將這3個(gè)不同類型的簡(jiǎn)單數(shù)據(jù)組織成“元組”復(fù)合數(shù)據(jù)類型:>>>BookInfo0=('ID0010230',15.68,36)>>>type(BookInfo0)<class'tuple'>#返回元組類型另一用戶預(yù)訂的商品編號(hào)為ID2315937、單價(jià)為20元,數(shù)量為2,可記作:>>>BookInfo1=('ID2315937',20,2)>>>BookInfo1[1]20#返回元組BookInfo1中索引為1的項(xiàng)的值在Python語言中,復(fù)合數(shù)據(jù)類型有元組(tuple)、集合(set)、列表(list)、字典(dict)等①元組

一、數(shù)據(jù)類型Python復(fù)合數(shù)據(jù)類型某用戶預(yù)訂的商品編號(hào)為I54一、數(shù)據(jù)類型訂單匯總,可以定義為一個(gè)集合(集合里的項(xiàng)稱為元素,彼此之間沒有順序):>>>BookSet={BookInfo0,BookInfo1}>>>type(BookSet)<class'set'>#返回集合類型>>>BookSet{('ID2315937',20,2),('ID0010230',15.68,36)}#返回集合的值>>>BookInfo0inBookSet#測(cè)試元素BookInfo0是否屬于集合BookSetTrue#返回邏輯真②集合一、數(shù)據(jù)類型訂單匯總,可以定義為一個(gè)集合(集合里的項(xiàng)稱為元素55訂單匯總,也可以按訂單產(chǎn)生的先后順序組成一個(gè)列表(列表里的項(xiàng)是有順序編號(hào)的):>>>BookList=[BookInfo0,BookInfo1]>>>type(BookList)<class'list'>#返回列表類型>>>BookList[0]('ID0010230',15.68,36)>>>BookList[1]('ID2315937',20,2)>>>BookList[0][1]*BookList[0][2]+BookList[1][1]*BookList[1][2]604.48#返回計(jì)算結(jié)果③列表訂單匯總,也可以按訂單產(chǎn)生的先后順序組成一個(gè)列表(列表里的項(xiàng)56是Python中標(biāo)準(zhǔn)數(shù)據(jù)類型之一,它也是容器類型,可以存儲(chǔ)不同的數(shù)據(jù),并且具有可變性。字典顧名思義,就是擁有類似字典的特性,通過“鍵”能夠快速查找對(duì)應(yīng)的“值”。這種基本的數(shù)據(jù)結(jié)構(gòu)稱為“鍵值對(duì)”。廣義上來說,其他標(biāo)準(zhǔn)數(shù)據(jù)類型中也存在“鍵值對(duì)”,只是它們的鍵只能是索引號(hào),而字典的鍵可以是不可變的數(shù)據(jù)類型(數(shù)字、字符串和元組)。實(shí)例1tel=dict([('sape',4139),('guido',4127),('jack',4098)])print(tel)#輸出結(jié)果為:{'sape':4139,'guido':4127,'jack':4098}#會(huì)發(fā)現(xiàn)直接轉(zhuǎn)化成字典。key:value實(shí)例2tec={x:x**2forxin(2,4,6)}print(tec)#輸出結(jié)果{2:4,4:16,6:36}④字典(dictionary)是Python中標(biāo)準(zhǔn)數(shù)據(jù)類型之一,它也是容器類型,可以存儲(chǔ)不57實(shí)例3knights={'Apollo':'theBrave','Prothemeus':'theugly'}fork,vinknights.items():print(k,'---->',v)#輸出結(jié)果Apollo---->theBraveProthemeus---->theugly實(shí)例4fori,vinenumerate(['tick','Dida','Mouo']):print(i,v)#enumerate()函數(shù)返回的是列表中的索引與鍵值#輸出結(jié)果0tick1Dida2Mouo實(shí)例5questions=['name','quest','favoriatecolor']answers=['lacelot','theholygrail','blue']forq,vinzip(questions,answers):print('Whatisyour{0}?Itis{1}.'.format(q,v))#通過zip函數(shù)把兩個(gè)不相關(guān)的序列,弄成一組#輸出結(jié)果為:Whatisyourname?Itislacelot.Whatisyourquest?Itistheholygrail.Whatisyourfavoriatecolor?Itisblue.實(shí)例358數(shù)據(jù)類型轉(zhuǎn)換:函數(shù)格式使用示例描述int(x[,base])int("8")

可以轉(zhuǎn)換的包括String類型和其他數(shù)字類型,但是會(huì)丟失精度

float(x)

float(1)/float("1")

可以轉(zhuǎn)換String和其他數(shù)字類型,不足的位數(shù)用0補(bǔ)齊,例如1會(huì)變成1.0

complex(real,imag)

complex("1")/complex(1,2)

第一個(gè)參數(shù)可以是String或者數(shù)字,第二個(gè)參數(shù)只能為數(shù)字類型,第二個(gè)參數(shù)沒有時(shí)默認(rèn)為0

str(x)

str(1)

將數(shù)字轉(zhuǎn)化為String

repr(x)

repr(Object)

返回一個(gè)對(duì)象的String格式

eval(str)

eval("12+23")

執(zhí)行一個(gè)字符串表達(dá)式,返回計(jì)算的結(jié)果,如例子中返回35

list(s)

list((1,2,3,4))

將序列轉(zhuǎn)變成一個(gè)列表,參數(shù)可為元組、字典、列表,為字典時(shí),返回字典的key組成的集合

chr(x)

chr(0x30)

chr()用一個(gè)范圍在range(256)內(nèi)的(就是0~255)整數(shù)作參數(shù),返回一個(gè)對(duì)應(yīng)的字符。返回值是當(dāng)前整數(shù)對(duì)應(yīng)的ascii字符。

ord(x)

ord('a')

返回對(duì)應(yīng)的ASCII數(shù)值,或者Unicode數(shù)值

hex(x)

hex(12)

把一個(gè)整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串

oct(x)

oct(12)

把一個(gè)整數(shù)轉(zhuǎn)換為八進(jìn)制字符串?dāng)?shù)據(jù)類型轉(zhuǎn)換:函數(shù)格式使用示例描述int(x[,base]59編制訂單數(shù)據(jù)處理程序網(wǎng)店接受了大量的訂單,如何安排發(fā)貨呢?實(shí)際上,網(wǎng)店在處理訂單時(shí),一般采取“先下單,先發(fā)貨”的原則。因此,所有的訂單將按照下單的時(shí)間順序放進(jìn)一個(gè)列表中,先放進(jìn)去的先發(fā)貨,所有訂單排列在一起,像是一群人在排隊(duì)。

下面的Python程序可以實(shí)現(xiàn)以下功能:提供“添加訂單”“發(fā)貨”“查看訂單列表”“退出”四個(gè)操作選項(xiàng)。當(dāng)我們選擇“1”后輸入訂單數(shù)據(jù),程序?qū)⒂唵螖?shù)據(jù)添加到訂單數(shù)據(jù)表中;選擇“2”后,程序?qū)?dāng)前訂單列表中最早進(jìn)入的數(shù)據(jù)刪除(表示已安排發(fā)貨處理);選擇“3”可以顯示當(dāng)前訂單列表中所有的訂單數(shù)據(jù);選擇“4”將結(jié)束運(yùn)行。請(qǐng)你完善下列Python程序,模擬添加訂單和發(fā)貨的過程,了解訂單列表的操作過程。編制訂單數(shù)據(jù)處理程序網(wǎng)店接受了大量的訂單,如何60編制訂單數(shù)據(jù)處理程序listque=[] #定義列表listque存儲(chǔ)訂單x=0while(x!=4): #當(dāng)x=!4時(shí),執(zhí)行循環(huán)

print('1.添加訂單')print('2.發(fā)貨')print('3.查看訂單列表')print('4.退出')x=int(input("輸入你的選擇:")) #輸入選擇項(xiàng)

ifx==1:y=input("輸入訂單編號(hào):") #輸入訂單編號(hào)

listque.append(y) #在列表listque中添加訂單號(hào)

elifx==2:iflen(listque)==0: #如果訂單列表為空

print("訂單列表為空")else:print("發(fā)貨單號(hào):"+listque.pop(0))

elifx==3:print("等待發(fā)貨:",listque) #查詢列表listque中的訂單號(hào)

print()input("運(yùn)行完畢,請(qǐng)按回車鍵退出...")訂單處理程序數(shù)據(jù)類型編制訂單數(shù)據(jù)處理程序listque=[]61數(shù)據(jù)結(jié)構(gòu):存在特定關(guān)系的數(shù)據(jù)元素的集合。常用的數(shù)據(jù)結(jié)構(gòu)有:數(shù)組,棧,鏈表,隊(duì)列,樹,圖,堆,散列表等數(shù)據(jù)結(jié)構(gòu)也稱邏輯結(jié)構(gòu):集合結(jié)構(gòu)、線性結(jié)構(gòu)、樹結(jié)構(gòu)、圖結(jié)構(gòu)(網(wǎng)狀結(jié)構(gòu))數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu):存在特定關(guān)系的數(shù)據(jù)元素的集合。數(shù)據(jù)結(jié)構(gòu)也稱邏輯結(jié)62數(shù)據(jù)結(jié)構(gòu)

——線性數(shù)據(jù)結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)又稱線性表。特點(diǎn):除首元素沒有前驅(qū)元素、尾元素沒有后繼元素外,其它元素都只有一個(gè)前驅(qū)元素和一個(gè)后繼元素。數(shù)據(jù)元素之間是一對(duì)一的關(guān)系。數(shù)據(jù)結(jié)構(gòu)——線性數(shù)據(jù)結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)又稱線性表。63常見的線性數(shù)據(jù)結(jié)構(gòu)(1)棧常見的線性結(jié)構(gòu)有:棧、隊(duì)列和串等都屬于線性結(jié)構(gòu)。棧是一種特殊的線性表,僅能在線性表的一端操作,棧頂允許操作,棧底不允許操作。棧的特點(diǎn)是:先進(jìn)后出,或者說是后進(jìn)先出,從棧頂放入元素的操作叫入棧,取出元素叫出棧。常見的線性數(shù)據(jù)結(jié)構(gòu)(1)棧常見的線性結(jié)構(gòu)有:棧、隊(duì)列和串等64隊(duì)列與棧一樣,也是一種線性表,不同的是,隊(duì)列可以在一端添加元素,在另一端取出元素,也就是:先進(jìn)先出。從一端放入元素的操作稱為入隊(duì),取出元素為出隊(duì),示例圖如下:

(2)隊(duì)列典型的例子如超市里排隊(duì)付款的隊(duì)伍。隊(duì)列與棧一樣,也是一種線性表,不同的是,隊(duì)列可以在一端添加元65隊(duì)列是一種有限制的線性結(jié)構(gòu)。特點(diǎn):數(shù)據(jù)元素只能在一端依次添加(進(jìn)隊(duì)),在另一端依次刪除(出隊(duì))。隊(duì)列在Python中,用列表實(shí)現(xiàn)隊(duì)列的創(chuàng)建;隊(duì)列的基本操作:入隊(duì),出隊(duì),求隊(duì)長(zhǎng),判隊(duì)空。

——隊(duì)列數(shù)據(jù)結(jié)構(gòu)隊(duì)列是一種有限制的線性結(jié)構(gòu)。隊(duì)列在Python中,用列表實(shí)現(xiàn)66隊(duì)列的計(jì)算機(jī)實(shí)現(xiàn):在Python中,隊(duì)列一般用列表(list)實(shí)現(xiàn),常用操作:q=[]#定義空列表qq.append(x)#元素x入隊(duì)(添加)q.pop(0)#返回隊(duì)首元素,隊(duì)首元素出隊(duì)(刪除)

len(q)#返回隊(duì)列q的長(zhǎng)度(元素個(gè)數(shù))q[i]#返回列表q中索引(index)為i的元素.索引有2套編號(hào)方式:

正編號(hào)(從左到右編號(hào)依次為0,1,2,…)和負(fù)編號(hào)(從右到左編

號(hào)依次為-1,-2,-3,…)數(shù)據(jù)結(jié)構(gòu)

——隊(duì)列隊(duì)列的計(jì)算機(jī)實(shí)現(xiàn):在Python中,隊(duì)列一般用列表(list67閱讀教材

“探究快遞配送過程”的活動(dòng)1,了解快遞派送線路,完成P60的連點(diǎn)成樹。派送點(diǎn)學(xué)校收發(fā)室某單位傳達(dá)室收件人A同學(xué)收件人B同學(xué)職工小王職工小李A(yù)BCDEFG數(shù)據(jù)結(jié)構(gòu)

——樹結(jié)構(gòu)閱讀教材“探究快遞配送過程”的活動(dòng)1,了解快遞派送線路,68樹的遞歸定義如下:樹是由n(n>=0)個(gè)節(jié)點(diǎn)組成的有限集合。若n=0,則稱為空樹。任何一個(gè)非空樹均滿足以下二個(gè)條件:(1)僅有一個(gè)根節(jié)點(diǎn)。(2)當(dāng)n>0時(shí),其余節(jié)點(diǎn)可分為m(m>=0)個(gè)互不相交的有限集合,其中每個(gè)集合又是一棵樹,并稱為根的子樹。特點(diǎn):數(shù)據(jù)元素之間是一對(duì)多的關(guān)系。數(shù)據(jù)結(jié)構(gòu)樹結(jié)構(gòu)是一種具有層次關(guān)系的非線性結(jié)構(gòu)。

——樹結(jié)構(gòu)樹的遞歸定義如下:樹是由n(n>=0)個(gè)節(jié)點(diǎn)組成的有限集合。69樹結(jié)構(gòu)樹是一種具有層次關(guān)系的非線性數(shù)據(jù)結(jié)構(gòu)樹結(jié)構(gòu)樹是一種具有層次關(guān)系的非線性數(shù)據(jù)結(jié)構(gòu)70快遞到達(dá)目的地城市后,物流圖的結(jié)構(gòu)呈樹狀快遞到達(dá)目的地城市后,物流圖的結(jié)構(gòu)呈樹狀71了解物流網(wǎng)絡(luò)了解物流網(wǎng)絡(luò)72岳陽市長(zhǎng)沙市南通市南京泰州市揚(yáng)州市了解物流網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)

——圖結(jié)構(gòu)岳陽市長(zhǎng)沙市南通市南京泰州市揚(yáng)州市了解物流網(wǎng)絡(luò)數(shù)73圖結(jié)構(gòu)結(jié)構(gòu)是由--組節(jié)點(diǎn)(稱為頂點(diǎn))和--組節(jié)點(diǎn)間的連線(稱為邊或弧)構(gòu)成的一種數(shù)據(jù)結(jié)構(gòu)。圖結(jié)構(gòu)中的每個(gè)頂點(diǎn)都可以與其他頂點(diǎn)有邊相連,圖結(jié)構(gòu)中數(shù)據(jù)元素之間是多對(duì)多的關(guān)系。圖3.2.6表示的是商品從供貨點(diǎn)到收貨點(diǎn)的派送過程的圖結(jié)構(gòu)。圖3.2.7也是--個(gè)圖結(jié)構(gòu),其中,標(biāo)為(4“1”的頂點(diǎn)與兩條邊相連,頂點(diǎn)“4”與“2”“8”“9”相連。在物流網(wǎng)絡(luò)中,分撥中心、配送中心、貨物需求點(diǎn)等可以抽象為圖的頂點(diǎn),城市道路、各級(jí)鐵路等可以抽象為圖的邊,如城市以及城市之間的運(yùn)輸?shù)缆肪褪菆D結(jié)構(gòu)。利用圖結(jié)構(gòu),我們還可以解決物流中的許多問題,如道路網(wǎng)絡(luò)分析、車輛運(yùn)營(yíng)安排等。圖結(jié)構(gòu)結(jié)構(gòu)是由--組節(jié)點(diǎn)(稱為頂點(diǎn))和--組74圖結(jié)構(gòu)是由一組節(jié)點(diǎn)(稱為頂點(diǎn))和一組節(jié)點(diǎn)間的連線(稱為邊或?。?,構(gòu)成的一種數(shù)據(jù)結(jié)構(gòu)。特點(diǎn):圖結(jié)構(gòu)中的每個(gè)頂點(diǎn)都可以與其他頂點(diǎn)有邊相連,數(shù)據(jù)元素之間是多對(duì)多的關(guān)系。數(shù)據(jù)結(jié)構(gòu)

——圖結(jié)構(gòu)①②③④⑤⑥

所有的頂點(diǎn)構(gòu)成一個(gè)頂點(diǎn)集合,所有的邊構(gòu)成邊的集合,一個(gè)完整的圖結(jié)構(gòu)就是由頂點(diǎn)集合和邊集合組成。圖結(jié)構(gòu)在數(shù)學(xué)上記為以下形式:

G=(V,E)或者

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論