




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第十一章數(shù)組與鏈表(含代碼)1.數(shù)組在內存中的存儲方式為順序存儲,數(shù)組作為常用的數(shù)據(jù)結構,有特定的數(shù)據(jù)組織、存儲結構及操作特性。2.計算機中數(shù)據(jù)的存儲結構主要分為順序存儲結構和非順序存儲結構。常見的順序存儲結構是數(shù)組,常見的非順序存儲結構是鏈表3.數(shù)字是由相同類型的變量構成的一個序列。數(shù)組使用一個標識符命名,并用編號區(qū)分數(shù)組內的各個變量,這個特殊的標識符號稱為數(shù)組名,編號稱為下表或索引。由數(shù)組名和下標組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組元素。(數(shù)組的下標一般從0開始)4.數(shù)組在內存中的存儲結構簡單,創(chuàng)建數(shù)組時系統(tǒng)會分配一塊連續(xù)的存儲空間,每個數(shù)組元素按照下標順序依次存儲。如下圖圖1.15.一維數(shù)組適合用來表示具有線性特征的數(shù)據(jù)序列,因此只需要一個下標來表示數(shù)據(jù)元素在該序列中的位置。如果要表示二維空間內既有縱向聯(lián)系和又有橫向聯(lián)系的一批數(shù)據(jù),那么采用二維數(shù)組會變得更形象、方便由于二維數(shù)組中的數(shù)組有行有列兩個維度的位置信息,因此需要兩個下標。二維數(shù)組下標詳見下圖:圖1.26.用二維數(shù)組表示的數(shù)據(jù)在內存中的存儲方式也才用順序存儲,有行優(yōu)先存儲和列優(yōu)先存儲。一般默認采用行優(yōu)先。7.數(shù)組的特性:1.數(shù)組元素的數(shù)據(jù)類型相同,2.通過數(shù)組名的下標對數(shù)組元素的值進行訪問,3.數(shù)據(jù)存儲空間不變8.動態(tài)數(shù)組就是在聲明時沒有確定數(shù)據(jù)規(guī)模的數(shù)組,可以在任何時候改變數(shù)據(jù)規(guī)模。9.對數(shù)組的常見操作有:數(shù)組的創(chuàng)建、數(shù)組元素的訪問、數(shù)組元素的插入和刪除等。10.Python沒有數(shù)組這種數(shù)據(jù)結構,所以采用列表來實現(xiàn)。11.數(shù)組的和創(chuàng)建實質是在系統(tǒng)內存中劃分一塊連續(xù)區(qū)域,同來保存數(shù)組所含的所有數(shù)據(jù)元素12.數(shù)組元素的訪問指的是尋址到特定的數(shù)組元素,并根據(jù)存儲地址對該數(shù)據(jù)元素進行讀取、修改等操作。因為數(shù)組元素從0開始數(shù),所以:例如s[5]訪問的是s數(shù)組的第六個元素13.Python列表常用函數(shù)與方法:圖1.314.鏈表指的是將需要處理的數(shù)據(jù)對象以節(jié)點的形式,通過指針串聯(lián)在一起的一種數(shù)據(jù)結構。鏈表中的每一個節(jié)點一般由“數(shù)據(jù)區(qū)域”和“指針區(qū)域”兩部分構成(如下圖)。數(shù)據(jù)區(qū)域用于保存實際需要處理的數(shù)據(jù)元素,指針區(qū)域用來保存該節(jié)點相鄰節(jié)點的存儲地址,通過該地址指向(指針)來實現(xiàn)從當前節(jié)點按順序走到相鄰的節(jié)點。某個節(jié)點前面的相鄰節(jié)點稱為該節(jié)點的前驅節(jié)點,后面的相鄰節(jié)點稱為該節(jié)點的后繼節(jié)點。15.每個鏈表都擁有一個表頭head(也稱為頭指針),頭指針的作用之一是鏈表的入口,只有通過頭指針才能進入鏈表;作用之二是為循環(huán)鏈表設立一個邊界,便于數(shù)據(jù)處理時的邊界判斷和處理。16.鏈表可以根據(jù)每個節(jié)點中指針的數(shù)量分為兩類:只有一個指針的單向鏈表和有兩個指針的雙向鏈表(即每個節(jié)點有兩個指針區(qū)域,一個指向前驅節(jié)點,一個指向后繼節(jié)點)。將第一個節(jié)點和最后一個節(jié)點使用指針鏈接,就會形成循環(huán)鏈表17.單向鏈表中各個節(jié)點在內存中可以非順序存儲,每個節(jié)點使用指針指向后繼節(jié)點的存儲地址。進入鏈表只能通過頭指針head,其他節(jié)點則需要經(jīng)過所有在它之前的節(jié)點才可以訪問,尾節(jié)點的指針指向null,表示指向為空(一般情況下,尾指針為1。當尾指針指向head時,即為循環(huán)鏈表)18.鏈表的特性:1.同一鏈表中每個節(jié)點的結構均相同,2.每個鏈表必定有一個頭指針,以實現(xiàn)對鏈表的引用和邊界處理,3.鏈表占用的空間不固定。19.鏈表的操作有:鏈表的創(chuàng)建、鏈表節(jié)點的訪問、鏈表節(jié)點的插入與刪除單向鏈表代碼實現(xiàn)給定一個鏈表a[],其第一個元素代表的下標為head。a[i]代表的元素是一個長度為2的數(shù)組,其中a[i][0]表示它的數(shù)據(jù)data(數(shù)據(jù)都是整數(shù)),a[i][1]表示它的下一個元素next,如果next為?1代表其是鏈表的最后一個元素。假設有如下代碼:a=[['A',2],['D',1],['B',3],['C',1]]head=0#刪除第一個元素head=a[head][1]#遍歷鏈表h=headwhileh!=1:print(a[h][0])h=a[h][1]#刪除中間元素,根據(jù)內容Bh=headpre=headwhileh!=1:ifa[h][0]=='B':breakelse:pre=hh=a[h][1]a[pre][1]=a[h][1]#在頭部插入元素head=0a.append(['E',head])head=len(a)1#插入中間元素根據(jù)值#首先找到Bh=headwhileh!=1:ifa[h][0]=='B':breakelse:h=a[h][1]#然后插入Ea.append(['E',a[h][1]])a[h][1]=len(a)1鏈表相對于數(shù)組而言,更便于刪除和添加,數(shù)組相對于鏈表而言,更便于查找和修改 表1.1雙向鏈表代碼實現(xiàn)給定一個鏈表a[],其第一個元素代表的下標為head。a[i]代表的元素是一個長度為3的數(shù)組,其中a[i][0]表示當前節(jié)點的前一個節(jié)點pre,a[i][1]表示它的數(shù)據(jù)data(數(shù)據(jù)都是整數(shù)),a[i][2]表示它的下一個節(jié)點next,如果next為?1代表其是鏈表的最后一個元素。假設有如下代碼:a=[[1,'A',2],[3,'D',1],[0,'B',3],[2,'C',1]]head=0pre=next1=head#遍歷鏈表(從前往后)whilenext1!=1:print(a[next1][1])next1=a[next1][2]#遍歷鏈表(從后往前)whilea[next1][2]!=1:#先找到最后一個節(jié)點next1=a[next1][2]pre=next1whilepre!=1:#從最后一個節(jié)點向前遍歷print(a[pre][1])pre=a[pre][0]#刪除中間元素,根據(jù)內容Bwhilenext1!=1:ifa[next1][1]=="B":breakelse:pre=next1next1=a[next1][2]a[a[next1][2]][0]=a[next1][0]a[pre][2]=a[next1][2]#在頭部插入元素a.append([1,'E',head])head=len(a)1pre=next1=head 表1.2#插入中間元素根據(jù)值whilenext1!=1:ifa[next1][1]=="B":breakelse:pre=next1next1=a[next1][2]a.ap
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國外螺紋活接頭數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國全棉素色羽絨被數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國EPS隔熱夾芯板數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國API美標法蘭閘閥數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國6N高純銅數(shù)據(jù)監(jiān)測研究報告
- 2025年中國蛋白質飲料生產(chǎn)線設備市場調查研究報告
- 2025年中國航空障礙標志燈市場調查研究報告
- 2025年中國堿式乙酸鉛市場調查研究報告
- 2025年度辦公室租賃與人力資源招聘合同
- 2025年河海大學自主招生個人陳述實例分享
- 修建水壩施工合同模板
- 北師大版三年級下冊除法豎式計算題練習100道及答案
- 房屋租給賣煙花的合同
- 十堰2024年湖北十堰市茅箭區(qū)教育局所屬學校招聘教師134人筆試歷年典型考題及考點附答案解析
- 《陸上風電場工程概算定額》NBT 31010-2019
- 展會展中營銷方案
- 2024屆遼寧省沈陽市名校中考四?;瘜W試題含答案解析
- 2024年新高考改革方案政策
- 2024年許昌職業(yè)技術學院單招職業(yè)技能測試題庫及答案解析
- 《新媒體創(chuàng)意短視頻制作》課件-運動短視頻制作關鍵技術
- JTGT F20-2015 公路路面基層施工技術細則
評論
0/150
提交評論