




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.1隊(duì)列結(jié)構(gòu)及其實(shí)現(xiàn)高中信息技術(shù)/教科版/選擇性必修1目錄1.情景導(dǎo)入,引入新課2.體驗(yàn)活動(dòng),初識(shí)隊(duì)列3.探究隊(duì)列抽象數(shù)據(jù)類型及其應(yīng)用4.用順序存儲(chǔ)實(shí)現(xiàn)隊(duì)列5.用鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)隊(duì)列6.課堂小結(jié)1.情景導(dǎo)入,引入新課”利用假期時(shí)間去游覽祖國(guó)各地的名讀萬(wàn)卷書(shū),行萬(wàn)里路。'勝古跡,既可以放松緊張的心情,又可以學(xué)到很多知識(shí)。在旅游風(fēng)景區(qū),排隊(duì)是不可避免的現(xiàn)象。本節(jié)圍繞“排隊(duì)買票”項(xiàng)目展開(kāi)學(xué)習(xí),通過(guò)項(xiàng)目活動(dòng)認(rèn)識(shí)生活中的隊(duì)列,學(xué)習(xí)利用抽象數(shù)據(jù)類型定義隊(duì)列,編寫(xiě)代碼實(shí)現(xiàn)隊(duì)列的基本操作。本節(jié)主要包含“體驗(yàn)排隊(duì)買票”和“編程實(shí)現(xiàn)排隊(duì)買票”兩個(gè)任務(wù)。2.體驗(yàn)活動(dòng),初識(shí)隊(duì)列
任務(wù)一體驗(yàn)排隊(duì)買票
活動(dòng)1認(rèn)識(shí)生活中的隊(duì)列如果我們將排隊(duì)買票的人抽象成一個(gè)數(shù)據(jù)元素a,那么排隊(duì)買票的隊(duì)列可以用圖4.1.2表示。隊(duì)首隊(duì)尾a1a2a3……an
排隊(duì)買票
任務(wù)一體驗(yàn)排隊(duì)買票
活動(dòng)1認(rèn)識(shí)生活中的隊(duì)列根據(jù)圖4.1.2所示,分析排隊(duì)買票的情況,完成以下問(wèn)題。(1)購(gòu)票的行為發(fā)生在隊(duì)列的
,完成購(gòu)票的人離開(kāi)隊(duì)列后,隊(duì)列有什么變化?(2)新來(lái)的買票人排在隊(duì)列的
購(gòu)票的人增加后,隊(duì)列有什么變化?填一填隊(duì)首隊(duì)尾隊(duì)列是一種操作受限制的線性結(jié)構(gòu),只允許在表的前端(隊(duì)首)進(jìn)行數(shù)據(jù)元素刪除操作,在表的后端(隊(duì)尾)進(jìn)行插入操作在隊(duì)列中插入一個(gè)數(shù)據(jù)元素稱為入隊(duì),從隊(duì)列中刪除一個(gè)數(shù)據(jù)元素稱為出隊(duì)。因?yàn)殛?duì)列只允許在隊(duì)尾插入、在隊(duì)首刪除,所以先進(jìn)入隊(duì)列的元素先從隊(duì)列中刪除,故隊(duì)列又稱為先進(jìn)先出線性表。隊(duì)列3.探究隊(duì)列抽象數(shù)據(jù)類型及其應(yīng)用
任務(wù)一體驗(yàn)排隊(duì)買票
活動(dòng)2觀察排隊(duì)買票(1)7:50,售票窗口前沒(méi)有人排隊(duì)。(2)7:55,售票窗口前有5個(gè)人(用p1,p2,p3,p4,p5表示)依次在排隊(duì)。(3)8:00,開(kāi)始售票,有3個(gè)人(pl,p2,p3)陸續(xù)買票離開(kāi)又來(lái)了4個(gè)人(p6,p7,p8,p9)依次排入隊(duì)中根據(jù)上述觀察,思考并回答下面的問(wèn)題。(1)最先進(jìn)入隊(duì)列的是
.(2)p3買完票離開(kāi)后,排在隊(duì)首的人是
,隊(duì)列里有
個(gè)人在排隊(duì)。p1p46任務(wù)一體驗(yàn)排隊(duì)買票
活動(dòng)2觀察排隊(duì)買票ADTQueue:Queue():創(chuàng)建一個(gè)空隊(duì)列,返回值是一個(gè)空的隊(duì)列。enQueue(item):將數(shù)據(jù)元素item添加到隊(duì)尾,無(wú)返回值deQueu():從隊(duì)首刪除數(shù)據(jù)元素,返回隊(duì)首數(shù)據(jù)元素siz():返回隊(duì)列中數(shù)據(jù)元素的個(gè)數(shù)。isEmpty():判斷是否為空隊(duì)列,返回布爾值隊(duì)列抽象數(shù)據(jù)類型任務(wù)一體驗(yàn)排隊(duì)買票
活動(dòng)2觀察排隊(duì)買票假設(shè)有5個(gè)人(用p1,p2p3,p4,p5表示)依次前來(lái)排隊(duì)買票,完成排隊(duì)買票的過(guò)程如下。請(qǐng)根據(jù)操作描述補(bǔ)全下面的代碼。01.ticketLine=Queue()
#創(chuàng)建空隊(duì)列02.ticketLine.enQueue(p1)
#p1入隊(duì)03.ticketLine.enQueue(p2)
#p2入隊(duì)04.
.#p3入隊(duì)05.
.#p4入隊(duì)06.
.#p5入隊(duì)ticketLine.enQueue(p3)ticketLine.enQueue(p4)ticketLine.enQueue(p5)任務(wù)一體驗(yàn)排隊(duì)買票
活動(dòng)2觀察排隊(duì)買票假設(shè)有5個(gè)人(用p1,p2p3,p4,p5表示)依次前來(lái)排隊(duì)買票,完成排隊(duì)買票的過(guò)程如下。請(qǐng)根據(jù)操作描述補(bǔ)全下面的代碼。07.ticketLine.deQueue(
)
#p1出隊(duì)08.ticketLine.deQueue(
)
#p2出隊(duì)09.num=ticketLine.size(
)
#統(tǒng)計(jì)當(dāng)前排隊(duì)人數(shù)10.
#p3出隊(duì)11.
#p4出隊(duì)12.
#p5出隊(duì)13.
#查看隊(duì)列是否為空ticketLine.deQueue(
)
ticketLine.deQueue(
)
ticketLine.deQueue(
)
ticketLine.deQueue(
)
4.用順序存儲(chǔ)實(shí)現(xiàn)隊(duì)列
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)1用順序存儲(chǔ)實(shí)現(xiàn)隊(duì)列隊(duì)列抽象數(shù)據(jù)類型主要包括創(chuàng)建隊(duì)列、入隊(duì)、出隊(duì)、統(tǒng)計(jì)隊(duì)列數(shù)據(jù)元素個(gè)數(shù)、判斷隊(duì)列是否為空等操作接口。隊(duì)列的順序存儲(chǔ)實(shí)現(xiàn)可以用Python列表數(shù)據(jù)類型來(lái)實(shí)現(xiàn)。(1)創(chuàng)建隊(duì)列。創(chuàng)建空隊(duì)列,就是建立一個(gè)空的列表,用屬性items來(lái)保存隊(duì)列中的數(shù)據(jù)元素。請(qǐng)補(bǔ)全下面的代碼。01.classQueue:02.def__init__(self):
#創(chuàng)建隊(duì)列03.self.items=
#空列表[]
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)1用順序存儲(chǔ)實(shí)現(xiàn)隊(duì)列(2)入隊(duì)。入隊(duì)操作就是在列表items的最后添加一個(gè)新的數(shù)據(jù)元素item。例如,p6入隊(duì)的過(guò)程如圖4.1.3所示。p1p2p3p3p4p5隊(duì)首原隊(duì)尾新隊(duì)尾根據(jù)圖4.1.3所示,補(bǔ)全enQueue方法的實(shí)現(xiàn)代碼。04.defenQueue(self,item):
#入隊(duì)05.self.items.append(
)#隊(duì)尾增加一個(gè)數(shù)據(jù)元素
p6入隊(duì)item
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)1用順序存儲(chǔ)實(shí)現(xiàn)隊(duì)列(3)出隊(duì)。出隊(duì)操作就是移除并返回列表items中的第一個(gè)數(shù)據(jù)元素。例如,p1出隊(duì)的過(guò)程如圖4.1.4所示。p1p2p3p3p4p5原隊(duì)首隊(duì)尾根據(jù)圖4.1.4所示,補(bǔ)全deQueue方法的實(shí)現(xiàn)代碼06.defdeQueue(self):
#出隊(duì)07.returnself.items.pop(
)#移除隊(duì)首元素并返回圖4.1.4p1出隊(duì)新隊(duì)首0
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)1用順序存儲(chǔ)實(shí)現(xiàn)隊(duì)列(4)統(tǒng)計(jì)隊(duì)列數(shù)據(jù)元素個(gè)數(shù)。08.defsize(self):09.returnlen(self.items)
#返回隊(duì)列的數(shù)據(jù)元素個(gè)數(shù)(5)判斷隊(duì)列是否為空。10.defisEmpty(self):11.returnself.items==[]
#返回隊(duì)列是否為空的判斷值
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)1用順序存儲(chǔ)實(shí)現(xiàn)隊(duì)列隊(duì)列是一種要求先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),需要在表的一端插入數(shù)據(jù)元素,在另一端刪除數(shù)據(jù)元素。用列表實(shí)現(xiàn)隊(duì)列存在兩種情況:一種情況是隊(duì)首放在列表頭;另一種情況是隊(duì)首放在列表尾。兩種不同的情況,在實(shí)現(xiàn)入隊(duì)和出隊(duì)的操作中也存在差別,如表所示。列表實(shí)現(xiàn)的不同方案
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)1用順序存儲(chǔ)實(shí)現(xiàn)隊(duì)列將隊(duì)列抽象數(shù)據(jù)類型的順序存儲(chǔ)實(shí)現(xiàn)代碼輸入到文件中,保存為queue.py,利用排隊(duì)買票測(cè)試各個(gè)接口的效果。例如,小明和小梅來(lái)排隊(duì)買票,小明買到票出隊(duì),統(tǒng)計(jì)當(dāng)前隊(duì)列中的排隊(duì)總?cè)藬?shù)。請(qǐng)補(bǔ)全下面的代碼。01.fromqueueimportQueue
#導(dǎo)入隊(duì)列02.ticketLine=
#創(chuàng)建隊(duì)列對(duì)象03.ticketLine.enQueue("小明")
#小明入隊(duì)04.
#小梅入隊(duì)05.
#小明出隊(duì)06.print(ticketLine.size())
#顯示當(dāng)前排隊(duì)總?cè)藬?shù)Queue()ticketLine.enQueue("小梅")
ticketLine.deQueue(
)
5.用鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)隊(duì)列
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)2用鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)隊(duì)列(1)創(chuàng)建空隊(duì)列。創(chuàng)建空隊(duì)列,也可以稱為隊(duì)列的初始化,將隊(duì)首節(jié)點(diǎn)引用和隊(duì)尾節(jié)點(diǎn)引用都指向空,如圖4.1.5所示。圖4.1.5隊(duì)列初始化^headrear根據(jù)圖4.1.5的提示,補(bǔ)全隊(duì)列初始化代碼。01.classQueue():02.def__init__(self):03.self.head=None
#隊(duì)首指向空節(jié)點(diǎn)04.self.rear=
#隊(duì)尾指向空節(jié)點(diǎn)None
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)2用鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)隊(duì)列(2)入隊(duì)。入隊(duì)操作就是在鏈表的隊(duì)尾插入一個(gè)節(jié)點(diǎn)。例如,p5入隊(duì)的過(guò)程如圖4.1.6和圖4.1.7所示。p1p2p3p4^rearhead隊(duì)首隊(duì)尾圖4.1.6插入節(jié)點(diǎn)前p1p2p3p4rearhead隊(duì)首原隊(duì)尾p5^新隊(duì)尾圖4.1.7插入節(jié)點(diǎn)后
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)2用鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)隊(duì)列根據(jù)圖4.1.6和圖4.1.7的提示,補(bǔ)全enQueue方法的實(shí)現(xiàn)代碼。05.defenQueue(self,item):
#將元素item加入隊(duì)列,入隊(duì)06.p=Node(
)#生成新節(jié)點(diǎn)07.ifself.head==None:
#判斷隊(duì)首節(jié)點(diǎn)是否為空08.self.head=p
#隊(duì)首指向新節(jié)點(diǎn)09.self.rear=
#隊(duì)尾指向新節(jié)點(diǎn)10.else:11.tp=self.rear
#獲取當(dāng)前隊(duì)尾節(jié)點(diǎn)12.tp.next=p
#當(dāng)前隊(duì)尾指向新節(jié)點(diǎn)13.self.rear=
#隊(duì)尾指向新節(jié)點(diǎn)itempp
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)2用鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)隊(duì)列(3)出隊(duì)。出隊(duì)操作就是在鏈表的首端刪除一個(gè)節(jié)點(diǎn),修改頭節(jié)點(diǎn)引用。例如,p1出隊(duì)的過(guò)程如圖4.1.8所示。p1p2p3p4rearhead原隊(duì)首p5^隊(duì)尾新隊(duì)首圖4.1.8刪除節(jié)點(diǎn)
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)2用鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)隊(duì)列根據(jù)圖4.1.8的提示,補(bǔ)全deQueue方法的實(shí)現(xiàn)代碼。14.defdeQueue(self):
#刪除隊(duì)首元素,出隊(duì)15.ifself.head==None:
#判斷隊(duì)列是否為空16.returnNone
#返回空17.result=
#獲取隊(duì)首節(jié)點(diǎn)數(shù)據(jù)元素18.self.head=
#重新設(shè)置隊(duì)首節(jié)點(diǎn)19.returnresult
#返回節(jié)點(diǎn)數(shù)據(jù)
任務(wù)二編程實(shí)現(xiàn)排隊(duì)買票
活動(dòng)2用鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)隊(duì)列(4)統(tǒng)計(jì)隊(duì)列數(shù)據(jù)元素個(gè)數(shù)。統(tǒng)計(jì)隊(duì)列數(shù)據(jù)元素個(gè)數(shù),就是要遍歷鏈表中的每一個(gè)節(jié)點(diǎn),補(bǔ)全size方法的實(shí)現(xiàn)代碼。20.defsize(self):
#統(tǒng)計(jì)隊(duì)列的數(shù)據(jù)元素個(gè)數(shù)21.current=self.head
#獲取隊(duì)首節(jié)點(diǎn)22.count=
#初始化數(shù)據(jù)元素個(gè)數(shù)統(tǒng)計(jì)變量23.whilecurrent!=None:
#判斷當(dāng)前節(jié)點(diǎn)不為空節(jié)點(diǎn)24.count=
#數(shù)據(jù)元素個(gè)數(shù)增加一個(gè)25.current=current.next
#獲取下一個(gè)節(jié)點(diǎn)26.returncount
#返回隊(duì)列的數(shù)據(jù)元素個(gè)數(shù)0count+
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)非保溫鋼制門(mén)行業(yè)市場(chǎng)現(xiàn)狀分析規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)除雪車行業(yè)競(jìng)爭(zhēng)格局及前景趨勢(shì)預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)防曬品市場(chǎng)運(yùn)行態(tài)勢(shì)及投資前景規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)鐵水脫硫噴槍市場(chǎng)運(yùn)行現(xiàn)狀及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)鎢銅市場(chǎng)運(yùn)營(yíng)狀況及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)重點(diǎn)地區(qū)文物保護(hù)工程市場(chǎng)十三五規(guī)劃與投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)醬菜、辣白菜未來(lái)運(yùn)營(yíng)趨勢(shì)及發(fā)展盈利分析報(bào)告
- 2025-2030年中國(guó)藝術(shù)陶瓷行業(yè)市場(chǎng)現(xiàn)狀調(diào)研與前景規(guī)模預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)纖維素行業(yè)需求現(xiàn)狀及發(fā)展趨勢(shì)分析報(bào)告
- 2025貴州省安全員-B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 中華人民共和國(guó)保守國(guó)家秘密法實(shí)施條例培訓(xùn)課件
- 2024年全國(guó)統(tǒng)一高考英語(yǔ)試卷(新課標(biāo)Ⅰ卷)含答案
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識(shí) CCAA年度確認(rèn) 試題與答案
- 2024年濰坊工程職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 部編版一年級(jí)語(yǔ)文下冊(cè)全冊(cè)分層作業(yè)設(shè)計(jì)
- T∕ACSC 01-2022 輔助生殖醫(yī)學(xué)中心建設(shè)標(biāo)準(zhǔn)(高清最新版)
- 線性空間的定義與性質(zhì)
- 化妝品批生產(chǎn)記錄
- Excel數(shù)據(jù)透視表培訓(xùn)PPT課件
- 化工車間布置原則
- 硬筆書(shū)法紙(A3)
評(píng)論
0/150
提交評(píng)論