




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)一年級溫雨彤一個陽光燦爛的早上,小麗和小文帶著他們的小狗一起去公園放風箏。公園里的景色非常美麗,地上有綠油油的小草,有粗壯的大樹,還有粉紅粉紅的花朵。天上有潔白的云朵作文,可愛的小鳥。小麗和小文開始放風箏了,他們的風箏非常美麗,小文的風箏是一只小蜻蜓,小麗的風箏是一條小金魚。風箏起飛了,小狗在小麗和小文的后面歡快地奔跑。這一天,小麗和小王玩得非常開心,小狗也很開心。【放風箏看圖寫話】一年級呂燦明一個陽光明媚的早晨,小明和小紅一起來到草地上玩耍。這里的風景可美了,有藍天和白云,花草和樹木,還有鳥兒在天空中飛翔呢!小明和小紅開始放風箏了,小明的風箏是蜻蜓形狀的,小紅的風箏是金魚形狀的。他們迎著風兒奔跑著,后面還有一只可愛的小狗追著他們呢。看,他們玩得真開心啊!【放風箏看圖寫話】一年級鄭以彤一個星期天的早上,小明和小紅一起去公園放風箏。那里的景色美麗極了,旁邊有綠油油的小草,五顏六色的花兒,又高又大的樹木。藍天上飄著一朵朵白云,小鳥在天上自由自在地飛來飛去。小明和小紅開始放風箏了,他們面帶微笑,他們拉著風箏的線,一邊跑一邊看天上的風箏。旁邊一只可愛的小狗跟在他們的后面奔跑,他們開心極了。機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)一年級溫雨彤一個陽光燦爛的早上,小麗和小文帶著他們的小狗一起去公園放風箏。公園里的景色非常美麗,地上有綠油油的小草,有粗壯的大樹,還有粉紅粉紅的花朵。天上有潔白的云朵作文,可愛的小鳥。小麗和小文開始放風箏了,他們的風箏非常美麗,小文的風箏是一只小蜻蜓,小麗的風箏是一條小金魚。風箏起飛了,小狗在小麗和小文的后面歡快地奔跑。這一天,小麗和小王玩得非常開心,小狗也很開心。【放風箏看圖寫話】一年級呂燦明一個陽光明媚的早晨,小明和小紅一起來到草地上玩耍。這里的風景可美了,有藍天和白云,花草和樹木,還有鳥兒在天空中飛翔呢!小明和小紅開始放風箏了,小明的風箏是蜻蜓形狀的,小紅的風箏是金魚形狀的。他們迎著風兒奔跑著,后面還有一只可愛的小狗追著他們呢。看,他們玩得真開心啊!【放風箏看圖寫話】一年級鄭以彤一個星期天的早上,小明和小紅一起去公園放風箏。那里的景色美麗極了,旁邊有綠油油的小草,五顏六色的花兒,又高又大的樹木。藍天上飄著一朵朵白云,小鳥在天上自由自在地飛來飛去。小明和小紅開始放風箏了,他們面帶微笑,他們拉著風箏的線,一邊跑一邊看天上的風箏。旁邊一只可愛的小狗跟在他們的后面奔跑,他們開心極了。4機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)本章目標掌握機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)本章學習要點線性表的存儲結(jié)構(gòu)以及對線性表的建立、訪問、修改、刪除和插入的運算棧的存儲結(jié)構(gòu)以及對棧的建立、進棧和出棧的運算樹的存儲結(jié)構(gòu)二叉樹的存儲結(jié)構(gòu)以及對二叉樹的遍歷運算Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第1頁。4機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)本章目標掌握機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)本章學習要點線性表的存儲結(jié)構(gòu)以及對線性表的建立、訪問、修改、刪除和插入的運算棧的存儲結(jié)構(gòu)以及對棧的建立、進棧和出棧的運算樹的存儲結(jié)構(gòu)二叉樹的存儲結(jié)構(gòu)以及對二叉樹的遍歷運算Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第2頁。4機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)4.1
基本概念4.3
棧4.2線性表4.4
樹4.5
二叉樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第3頁。數(shù)據(jù)
是對客觀事物的符號表示,是指所有能輸入計算機內(nèi)并被計算機處理的符號的總稱。4.1基本概念數(shù)值、字符是數(shù)據(jù),圖形、圖像也是數(shù)據(jù)。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第4頁。數(shù)據(jù)元素
是數(shù)據(jù)的基本單位,是數(shù)據(jù)這個集合中相對獨立的個體。零件可以作為產(chǎn)品或部件的數(shù)據(jù)元素,圓柱體、長方體可以作為零件形體的數(shù)據(jù)元素,直線、圓弧可以作為圖形的數(shù)據(jù)元素。4.1基本概念Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第5頁。數(shù)據(jù)的邏輯結(jié)構(gòu)
是只考慮數(shù)據(jù)之間的邏輯關(guān)系,獨立于數(shù)據(jù)的存儲介質(zhì)。通常所說的數(shù)據(jù)結(jié)構(gòu)就是指數(shù)據(jù)的邏輯結(jié)構(gòu)。4.1基本概念Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第6頁。機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第7頁。機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第8頁。機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第9頁。機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)線性表棧樹二叉樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第10頁。線性表是一種最常用且最簡單的數(shù)據(jù)結(jié)構(gòu),是n個數(shù)據(jù)元素的有限序列(a1、a2、…an)。數(shù)據(jù)元素ai可以是一個數(shù)、一個符號,也可以是一個線性表,甚至是更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第11頁。例如:六角頭螺栓(GB/T5780-2000)的螺紋規(guī)格d可以構(gòu)成一個簡單的線性表(3,4,5,6,8,10,12,16,20,24,30,36,42)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第12頁。例如:減速箱明細表,表中的數(shù)據(jù)元素是由序號、名稱、數(shù)量和材料4個簡單數(shù)據(jù)組成的一個記錄。序號名稱數(shù)量材料1箱體1HT1002箱蓋1HT1003齒輪軸1454端蓋145……………………減速箱明細表4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第13頁。例如:六角頭螺栓螺紋規(guī)格d可以構(gòu)成一個簡單的線性表(3,4,5,6,8,10,12,16,20,24,30,36,42)例如:減速箱明細表………………HT100箱蓋2HT100箱體1材料名稱序號例如:減速箱明細表,表中的數(shù)據(jù)元素是由序號、名稱、數(shù)量和材料4個簡單數(shù)據(jù)組成的一個記錄。
從上面兩個實例中可以看出,盡管線性表中的數(shù)據(jù)元素可能是各種各樣的,但同一表中數(shù)據(jù)元素的類型必須是相同的。4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第14頁。例如:六角頭螺栓螺紋規(guī)格d可以構(gòu)成一個簡單的線性表(3,4,5,6,8,10,12,16,20,24,30,36,42)例如:減速箱明細表………………HT100箱蓋2HT100箱體1材料名稱序號
除了第一個和最后一個數(shù)據(jù)元素外,每個數(shù)據(jù)元素有且只有一個直接前趨,有且只有一個直接后繼。4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第15頁。4.2.1線性表的順序存儲結(jié)構(gòu)
用一組連續(xù)的存儲單元按線性表數(shù)據(jù)元素的邏輯結(jié)構(gòu)依次存放表中所有數(shù)據(jù)元素。4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第16頁。
特點:(1)有序性:各數(shù)據(jù)元素之間的存儲順序與邏輯順序一致(2)均勻性:每個數(shù)據(jù)元素所占存儲空間的長度相等4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第17頁。
操作:建表訪問修改刪除插入4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第18頁。
操作:staticcharlistc[]={′A′,′B′,′C′,′D′,′E};線性表listc有5個數(shù)據(jù)(A,B,C,D,E),用C語言編寫程序?qū)崿F(xiàn)此類操作建表訪問修改刪除插入64.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第19頁。
操作:charc;c=listc[2];線性表listc有5個數(shù)據(jù)(A,B,C,D,E),用C語言編寫程序?qū)崿F(xiàn)此類操作建表訪問修改刪除插入4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第20頁。
操作:Listc[2]=′T′;線性表listc有5個數(shù)據(jù)(A,B,C,D,E),用C語言編寫程序?qū)崿F(xiàn)此類操作建表訪問修改刪除插入4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第21頁。
操作:線性表listc有5個數(shù)據(jù)(A,B,C,D,E),用C語言編寫程序?qū)崿F(xiàn)此類操作建表訪問修改刪除插入4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表從線性表中刪除一個數(shù)據(jù)元素后還必須保持這個線性表的均勻性和有序性,因此被刪除元素之后的所有元素均應(yīng)向前移動,移動距離為一個數(shù)據(jù)元素所占存儲空間的長度。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第22頁。
操作:#defineLEN6main(){staticcharlistc[LEN]=(′A′,′B′,′C′,′D′,′E′};inti,j;printf(“刪除第幾個數(shù)據(jù)元素?“);scanf(“%d”,&i);for(j=i;j<LEN;j++)listc[j-1]=listc[j];listc[j]=′\0′;}線性表listc有5個數(shù)據(jù)(A,B,C,D,E),用C語言編寫程序?qū)崿F(xiàn)此類操作建表訪問修改刪除插入4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第23頁。4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表
操作:線性表listc有5個數(shù)據(jù)(A,B,C,D,E),用C語言編寫程序?qū)崿F(xiàn)此類操作建表訪問修改刪除插入將一個新的數(shù)據(jù)元素插入到線性表的第i個位置,即插入第i-1元素和第i個元素之間。為了保證線性表的均勻性,新的數(shù)據(jù)必須和表內(nèi)已有元素的類型一致;為了保證線性表的有序性,原線性表第i至最后一個元素要向后移動一個數(shù)據(jù)元素所占存儲空間的長度Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第24頁。4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表
操作:#defineLEN6main(){staticcharlistc[LEN]=(′A′,′B′,′C′,′D′,′E′};inti,j;charcl;printf(“輸入新的數(shù)據(jù)元素“);c1=getche();printf(“輸入新的數(shù)據(jù)元素的位置“);scanf(“%d”,&i);for(j=LEN;j>i;j--)listc[j]=listc[j-1];listc[j]=c1;}線性表listc有5個數(shù)據(jù)(A,B,C,D,E),用C語言編寫程序?qū)崿F(xiàn)此類操作建表訪問修改刪除插入Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第25頁。建表訪問修改刪除插入優(yōu)缺點:1)線性表在順序結(jié)構(gòu)中對數(shù)據(jù)元素的訪問(讀取)、修改快而方便,但在刪除和插入運算時,需要對數(shù)據(jù)元素作大量的移動。
2)由于線性表是一個靜態(tài)表,只有運行前進行定義,定義完成后,大小不能改變。4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第26頁。建表訪問修改刪除插入應(yīng)用:
多用于查找頻繁、很少增刪的場合,例如工程手冊中的數(shù)據(jù)表。4.2.1線性表的順序存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第27頁。
鏈式存儲結(jié)構(gòu)的特點4.2.2線性表的鏈式存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第28頁。
①
單向鏈表:單向鏈表結(jié)點的指針域只有一個,通常存放直接后繼的地址。4.2.2線性表的鏈式存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第29頁。
①
單向鏈表:假定線性表(A,B,C,D,E),將其按單向鏈表存儲數(shù)據(jù)操作:訪問、修改、刪除、插入4.2.2線性表的鏈式存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第30頁。刪除建立訪問查找修改
首先定義結(jié)點的數(shù)據(jù)類型,它有兩個成員:data和next。
data用來存放數(shù)據(jù)元素本身,本例是字符型的;
next存放該結(jié)點直接后繼的地址,所以它必須是指針型的,而且是指向字符型變量的指針。鏈表不必指出它的長度,而是根據(jù)需要動態(tài)的申請存儲空間。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第31頁。刪除建立訪問查找修改
/*定義結(jié)點的數(shù)據(jù)結(jié)構(gòu)*/structlink{chardata;/*數(shù)據(jù)域*/structurelink*next;/*指向直接后繼的指針*/
}*head;/*鏈頭結(jié)點指針,是全局變量*/Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第32頁。刪除建立訪問查找修改
/*建立一個單向鏈表*/voidcreate(void){inti,LEN=5;/*鏈表初始長度為5*/structlink*node,*temp;for(i=0;i<LEN;i++){node=(structlink*)malloc(sizeof(structlink));node->data=‘A’+i;node->next=NULL;if(i==0)head=temp=node;else{temp->next=node;temp=node;}}}Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第33頁。刪除訪問查找修改
鏈表的邏輯順序與存儲順序無關(guān),如果訪問第i個元素,首先通過鏈頭結(jié)點head找到第1個結(jié)點的地址,再根據(jù)這個結(jié)點的指針域找到下一個結(jié)點的地址,直至找到第i個結(jié)點的地址,再訪問這個結(jié)點的數(shù)據(jù)域。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第34頁。刪除訪問查找修改
輸入i開始node為空?node=head,j=0j=j+1node=node->nexti=j?”沒有找到“結(jié)束訪問node結(jié)束Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第35頁。刪除訪問查找修改
/*訪問第i個數(shù)據(jù)元素*/charvisit(inti){intj=1;structlink*temp;temp=head;while(temp){if(j++==i)return(temp->data);temp=temp->next;}printf(“序號超出鏈表的范圍!”);return(‘\0’);}Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第36頁。刪除修改查找
在鏈表中查找是否有指定的數(shù)據(jù)元素,若有就輸出第一次出現(xiàn)這個數(shù)據(jù)元素的邏輯位置,否則輸出沒有這個數(shù)據(jù)元素的信息。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第37頁。刪除修改查找
/*查找特定數(shù)據(jù)元素的結(jié)點*/intsearch(charc){inti=1;structlink*temp;temp=head;while(temp){if(temp->data==c)return(i);i++;temp=temp->next;}printf(“沒有找到這個數(shù)據(jù)!”);return(0);}Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第38頁。刪除修改查找
修改第i個數(shù)據(jù)元素的值時,首先找到這個數(shù)據(jù)元素的結(jié)點。若修改指定數(shù)據(jù)元素的值,同樣先找到這個數(shù)據(jù)元素的結(jié)點,再修改這個結(jié)點的數(shù)據(jù)域即可。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第39頁。刪除查找
若要刪除第i個數(shù)據(jù)元素,需找到第i-1和第i個數(shù)據(jù)元素的結(jié)點,然后將第i-1個結(jié)點的指針指向第i+1個結(jié)點,再釋放第i個結(jié)點的存儲空間即可。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第40頁。刪除查找
/*刪除第i個結(jié)點*/voiddelete(inti){intj=1;structlink*node,*temp;node=temp=head;if(i==1){head=temp->next;free(temp);return;}
Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第41頁。刪除查找
while(node){if(++j==i){temp=node->next;if(temp==NULL){pritnf(“序號超出鏈表的范圍”);return;}node->next=temp->next;free(temp);return;}node=node->next;}printf(“序號超出鏈表的范圍”);}
Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第42頁。查找訪問查找刪除插入
在第i個數(shù)據(jù)元素之后插入一個新的數(shù)據(jù)元素時,首先為該數(shù)據(jù)元素申請存儲空間,得到一個新結(jié)點。在新節(jié)點的數(shù)據(jù)域存放數(shù)據(jù)元素的值,然后找到第i個結(jié)點。令結(jié)點指針域的指針等于第i個結(jié)點指針域的指針,第i個結(jié)點的指針域存放新結(jié)點的地址即可。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第43頁。查找訪問查找修改插入
/*在第i個數(shù)據(jù)元素后插入一個新的數(shù)據(jù)元素*/voidinsert(charc,inti){intj=1;structlink*node,*temp;temp=(structlink*)malloc(sizeof(structlink));temp->data=c;if(i<1){temp->next=head;head=temp;}else{node=head;
Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第44頁。查找訪問查找修改插入
while(node->next){if(j++==i)break;node=node->next;}if(node!=NULL){temp->next=node->next;node->next=temp;}else{node=temp;temp->next-NULL;}}}Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第45頁。②
雙向鏈表:4.2.2線性表的鏈式存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第46頁。數(shù)據(jù)操作:訪問、修改、刪除、插入②
雙向鏈表:4.2.2線性表的鏈式存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第47頁。③循環(huán)鏈表:4.2.2線性表的鏈式存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第48頁。
鏈表與線性表相比,其特點:
(1)刪除或插入運算,數(shù)據(jù)元素不需要移動;(2)不需要事先分配存儲空間;(3)表的容量根據(jù)需要動態(tài)申請和動態(tài)釋放。4.2.2線性表的鏈式存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第49頁。
鏈式存儲結(jié)構(gòu)的應(yīng)用
鏈表較適合用于表容量大小不定、且增刪操作頻繁的場合。4.2.2線性表的鏈式存儲結(jié)構(gòu)4.2線性表Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第50頁。1.什么是棧
后進先出4.3棧Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第51頁。三、棧2.棧的運算深度優(yōu)先搜索問題4.3棧Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第52頁。三、棧3.棧的應(yīng)用0149526378某齒輪傳動箱的傳動關(guān)系圖,其中0號軸為輸入軸,6、7、8、9號軸為輸出軸,其余各軸為中間傳動軸。編寫程序,輸入指定的軸號,打印從0號軸到指定軸的傳動路線。4.3棧Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第53頁。#include<stdio.h>#include<process.h>#defineMAX10staticinta[MAX][MAX]={{0,1,1},{0,0,0,1,1},{0,0,0,0,0,1},{0,0,0,0,0,0,1,1},{0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,1}};main(){ inti=0,j=0,top=0,n,dir,s[MAX]; printf("輸入軸號(1-%d):",MAX-1); scanf("%d",&n); printf("\n輸入軸的轉(zhuǎn)向為:\n1-------順時針\n2-------逆時針\n"); scanf("%d",&dir); if(n<1||n>=MAX) {printf("沒有這個軸號\n");exit(0);}Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第54頁。 s[top]=0; while(top>=0||j<10) {if(a[i][j]==1) {top++; s[top]=j; if(j==n) {printf("\n%d號軸的傳動路線是:",n); for(i=0;i<=top;i++) printf("--%d--",s[i]); switch(top%2) {case0:printf("\n輸出軸轉(zhuǎn)動方向與輸入軸相同\n");break; case1:printf("\n輸出軸轉(zhuǎn)動方向與輸入軸相反\n");break; } exit(1); } else {i=j;j=0;}}Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第55頁。elseif(j==9) { j=s[top]; top--; i=s[top]; } j++; } printf("沒有找到%d號軸的傳動路線\n",n);
}Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第56頁。四、樹1.樹的概念樹(tree)是一種重要的非線性的數(shù)據(jù)結(jié)構(gòu),主要用來存放非線性的具有分支結(jié)構(gòu)的結(jié)點。結(jié)點之間有著明顯的層次關(guān)系。這種結(jié)構(gòu)形式很常見。如書的目錄。4.4樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第57頁。四、樹2.樹的特點
1)根
2)葉子節(jié)點(終端結(jié)點):度為零的結(jié)點稱為葉子結(jié)點或終端結(jié)點
3)節(jié)點的度:一個結(jié)點具有的子樹數(shù)目稱為該結(jié)點的度
4)樹的度:樹內(nèi)各結(jié)點的度的最大值稱為樹的度4.4樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第58頁。四、樹2.樹的特點
5)結(jié)點的雙親:結(jié)點的直接前驅(qū)稱為該結(jié)點的雙親
6)結(jié)點的孩子:結(jié)點的直接后繼稱為該結(jié)點的孩子
7)兄弟:同一雙親的孩子間稱為兄弟
8)樹的深度或高度:樹中結(jié)點的最大層次稱為樹的深度或高度
9)森林:0個或多個不相交的樹的集合稱為森林4.4樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第59頁。四、樹2.樹的特點BFECGIHDA第1層第2層第4層第3層一般的樹
如下圖所示樹:結(jié)點A、B、C的度分別為2、3、1;結(jié)點D、F、G、H、I均為葉子結(jié)點;樹的度為3;結(jié)點A是結(jié)點B、C的雙親;結(jié)點B、C是結(jié)點A的孩子;B、C是兄弟;根結(jié)點為第一層,共有4層,樹的高度為4。若去掉結(jié)點A就成為森林。4.4樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第60頁。四、樹3.樹的存儲結(jié)構(gòu)樹結(jié)構(gòu)為非線性結(jié)構(gòu),需采用多重鏈表存儲,即每個結(jié)點除了數(shù)據(jù)域外,還需設(shè)有多個鏈域,分別指向該結(jié)點各孩子結(jié)點。一般樹的存儲結(jié)構(gòu)A︿B︿C︿︿︿D︿︿E︿︿F︿︿︿G︿︿︿H︿︿︿I︿︿4.4樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第61頁。五、二叉樹
1.二叉樹的概念:
二叉樹是一種很重要的樹結(jié)構(gòu)。它的特點是每個結(jié)點下只有左右兩棵子樹,且左右子樹不能顛倒,否則為另一棵二叉樹。4.5二叉樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第62頁。五、二叉樹
AAABBBCA(a)(b)(c)(d)(e)2.二叉樹的分類
二叉樹有五種基本形態(tài),如圖所示,其中(a)空二叉樹,(b)只有一個根結(jié)點的二叉樹,(c)右子樹為空的二叉樹,(d)左子樹為空的二叉樹,(e)左右子樹均為非空的二叉樹。4.5二叉樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第63頁。五、二叉樹3.二叉樹與一般樹的區(qū)別在于:
1)一般樹至少有一結(jié)點,而二叉樹可以為空。
2)一般樹的子樹不區(qū)分左右,而二叉樹有左右之分,且不能顛倒。
3)一般樹的每一個結(jié)點可以有任意個子樹,而二叉樹每一個結(jié)點的子樹不能超過2個。4.5二叉樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第64頁。五、二叉樹4.二叉樹的存儲結(jié)構(gòu)如圖所示為二叉樹的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。二叉樹的每個結(jié)點除了數(shù)據(jù)域info并設(shè)立兩個鏈域Lchild、Rchild分別指向該結(jié)點的左子樹和右子樹的根結(jié)點。由于二叉樹中的每個結(jié)點的構(gòu)造均相同所以給存儲和運算帶來方便。(a)結(jié)點的構(gòu)造LcinfoRc4.5二叉樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第65頁。五、二叉樹4.二叉樹的存儲結(jié)構(gòu)如圖所示為二叉樹的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。二叉樹的每個結(jié)點除了數(shù)據(jù)域info并設(shè)立兩個鏈域Lchild、Rchild分別指向該結(jié)點的左子樹和右子樹的根結(jié)點。由于二叉樹中的每個結(jié)點的構(gòu)造均相同所以給存儲和運算帶來方便。ABFCEIGDH(b)邏輯結(jié)構(gòu)4.5二叉樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第66頁。五、二叉樹4.二叉樹的存儲結(jié)構(gòu)如圖所示為二叉樹的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。二叉樹的每個結(jié)點除了數(shù)據(jù)域info并設(shè)立兩個鏈域Lchild、Rchild分別指向該結(jié)點的左子樹和右子樹的根結(jié)點。由于二叉樹中的每個結(jié)點的構(gòu)造均相同所以給存儲和運算帶來方便。
A
B
F∧D∧∧C∧∧E
G∧∧I∧∧H∧(c)存儲結(jié)構(gòu)4.5二叉樹Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第67頁。五、二叉樹5.二叉樹的遍歷
4.5二叉樹遍歷定義——指按某條搜索路線遍訪每個結(jié)點且不重復(fù) (又稱周游)。遍歷用途——它是樹結(jié)構(gòu)插入、刪除、修改、查找和排序運算的前提,是二叉樹一切運算的基礎(chǔ)和核心。
遍歷方法——牢記一種約定,對每個結(jié)點的查看都是
“先左后右”。Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第68頁。五、二叉樹5.二叉樹的遍歷
4.5二叉樹遍
歷
規(guī)
則二叉樹由根、左子樹、右子樹構(gòu)成,定義為D、
L、RD、L、R的組合定義了六種可能的遍歷方案:
LDR,LRD,DLR,DRL,RDL,RLD若限定先左后右,則有三種實現(xiàn)方案:DLRLDRLRD先序遍歷中序遍歷后序遍歷Evaluationonly.CreatedwithAspose.Slidesfor.NET3.5ClientProfile.Copyright2019-2019AsposePtyLtd.機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)全文共78頁,當前為第69頁。五、二叉樹5.二叉樹的遍歷
4.5二叉樹先序遍歷:根左右結(jié)果為:中序遍歷:左根右結(jié)果為:
后序遍歷:左右根結(jié)果為:AB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漢語言文學的試題及答案
- 晚春中考試題及答案
- java面試題及答案機器人
- 做法口訣考試題及答案
- 機電工程創(chuàng)新方法論試題及答案
- 軟件設(shè)計師考試重要知識點及試題答案
- 應(yīng)試技巧軟件設(shè)計師試題及答案
- 國際法對公共政策的影響試題及答案
- 公共政策過程中的協(xié)作機制研究試題及答案
- 網(wǎng)絡(luò)工程師持續(xù)學習試題及答案
- 消化道出血護理查房7
- 太陽能光伏發(fā)電設(shè)備采購合同
- 江蘇省常州市教育學會2023-2024學年下學期八年級數(shù)學考試卷
- DZ∕T 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬(正式版)
- 2024年新教科版六年級下冊科學期末綜合測試卷(十九)
- 精神科進修匯報
- 2023年新高考天津卷歷史高考真題解析(參考版)
- 人工智能在文化遺產(chǎn)數(shù)字化保護中的應(yīng)用
- GB/T 41666.4-2024地下無壓排水管網(wǎng)非開挖修復(fù)用塑料管道系統(tǒng)第4部分:原位固化內(nèi)襯法
- 智能安防行業(yè)的技術(shù)應(yīng)用與商業(yè)模式
- 煤礦機電和運輸安全管理
評論
0/150
提交評論