




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章機(jī)械技術(shù)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)第1頁,共130頁。優(yōu)選第四章機(jī)械技術(shù)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)第2頁,共130頁。
一個孤立的具體數(shù)據(jù)往往沒有任何意義。各相關(guān)數(shù)據(jù)的集合→描述任何復(fù)雜事物。數(shù)據(jù)之間的關(guān)系為數(shù)據(jù)賦予了豐富的含義。數(shù)據(jù)結(jié)構(gòu)---------是數(shù)據(jù)之間的關(guān)系車床床身及導(dǎo)軌主軸箱尾座走刀箱溜板箱刀架離合器主軸組件中間變速機(jī)構(gòu)主軸主軸齒輪主軸軸承3第3頁,共130頁。第四章機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)掌握CAD軟件開發(fā)所需數(shù)據(jù)結(jié)構(gòu)的基本理論;線性表棧樹二叉樹第4頁,共130頁。數(shù)據(jù)
—是對客觀事物的符號表示,是指能輸入到計算機(jī)內(nèi)中并被計算機(jī)接受和處理的符號的總稱。用文字符號、數(shù)字符號及其它規(guī)定的符號(如圖形、圖像)對現(xiàn)實世界的事物及其活動的抽象描述。4.1基本概念第5頁,共130頁。
數(shù)據(jù)元素
—數(shù)據(jù)元素是數(shù)據(jù)的基本單位,是數(shù)據(jù)這個集合中相對獨(dú)立的個體。在程序中通常作為一個整體來進(jìn)行考慮和處理。在設(shè)計產(chǎn)品的過程中,可以把該產(chǎn)品的每個部件的每一個零件看作一個相對獨(dú)立的單元,這時每個零件就是一個數(shù)據(jù)元素;圓柱體、長方體可以作為零件形體的數(shù)據(jù)元素;直線、圓弧可以作為圖形的數(shù)據(jù)元素。
一個數(shù)據(jù)元素可由若干個數(shù)據(jù)項和組合項組成。數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位,數(shù)據(jù)項是對客觀事物某一方面特性的數(shù)據(jù)描述。第6頁,共130頁。數(shù)據(jù)項
是數(shù)據(jù)中最基本的、不可分的并有命名的數(shù)據(jù)單位,是對客觀事物某一方面特性的數(shù)據(jù)描述。2)組合項由若干個數(shù)據(jù)項組成。第7頁,共130頁。數(shù)據(jù)對象(DataObject):是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。如字符集合C={‘A’,’B’,’C,…}
數(shù)據(jù)結(jié)構(gòu)(DataStructure):是指相互之間具有(存在)一定聯(lián)系(關(guān)系)的數(shù)據(jù)元素的集合。第8頁,共130頁。
數(shù)據(jù)結(jié)構(gòu)(DataStructure):是指相互之間具有(存在)一定聯(lián)系(關(guān)系)的數(shù)據(jù)元素的集合。車床床身及導(dǎo)軌主軸箱尾座走刀箱溜板箱刀架離合器主軸組件中間變速機(jī)構(gòu)主軸主軸齒輪主軸軸承第9頁,共130頁。數(shù)據(jù)結(jié)構(gòu)的三個組成部分:邏輯結(jié)構(gòu):描述數(shù)據(jù)元素之間的邏輯關(guān)系。
D_S=(D,S)存儲結(jié)構(gòu):
數(shù)據(jù)元素在計算機(jī)中的存儲及其邏輯關(guān)系的表現(xiàn)稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。數(shù)據(jù)操作:
對數(shù)據(jù)要進(jìn)行的運(yùn)算(查找、插入、刪除)。
第10頁,共130頁。數(shù)據(jù)元素之間的邏輯結(jié)構(gòu)有四種基本類型:①集合:結(jié)構(gòu)中的數(shù)據(jù)元素除了“同屬于一個集合”外,沒有其它關(guān)系。②線性結(jié)構(gòu):結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一對一的關(guān)系。③樹型結(jié)構(gòu):結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一對多的關(guān)系。④圖狀結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu):結(jié)構(gòu)中的數(shù)據(jù)元素之間存在多對多的關(guān)系數(shù)據(jù)的邏輯結(jié)構(gòu)
定義:數(shù)據(jù)的邏輯結(jié)構(gòu)描述的是數(shù)據(jù)之間的邏輯關(guān)系、它從客觀的角度組織和表達(dá)數(shù)據(jù)。第11頁,共130頁。圖4-2四類基本結(jié)構(gòu)圖第12頁,共130頁。線性結(jié)構(gòu)—結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一對一的關(guān)系。每一個數(shù)據(jù)元素僅與它前面的一個和后面的一個數(shù)據(jù)元素相聯(lián)系。特點(diǎn):數(shù)據(jù)間的關(guān)系很簡單,只是順序排列的位置關(guān)系,而且這種位置關(guān)系是線性的。這種結(jié)構(gòu)的數(shù)據(jù)可以用數(shù)表的形式表示。又稱這類數(shù)據(jù)結(jié)構(gòu)為“線性表結(jié)構(gòu)”第13頁,共130頁。姓名電話號碼陳四。。。。。例4-1:電話號碼查詢系統(tǒng)設(shè)有一個電話號碼薄,它記錄了N個人的名字和其相應(yīng)的電話號碼,假定按如下形式安排:(a1,b1),(a2,b2),…(an,bn),其中ai,bi(i=1,2…n)
分別表示某人的名字和電話號碼。本問題是一種典型的表格問題。數(shù)據(jù)與數(shù)據(jù)成簡單的一對一的線性關(guān)系。第14頁,共130頁。例如:線性表的邏輯結(jié)構(gòu)第15頁,共130頁。樹狀結(jié)構(gòu)
結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一對多的關(guān)系。
每個數(shù)據(jù)元素僅與它前面的一個數(shù)據(jù)元素相關(guān),可與后面多個數(shù)據(jù)元素相關(guān)。樹結(jié)構(gòu)ABCDEFGH第16頁,共130頁。例如:線性表的邏輯結(jié)構(gòu)第17頁,共130頁。例4-2:磁盤目錄文件系統(tǒng)
磁盤根目錄下有很多子目錄及文件,每個子目錄里又可以包含多個子目錄及文件,但每個子目錄只有一個父目錄,依此類推:本問題是一種典型的樹型結(jié)構(gòu)問題,如圖1-1
,數(shù)據(jù)與數(shù)據(jù)成一對多的關(guān)系,是一種典型的非線性關(guān)系結(jié)構(gòu)—樹形結(jié)構(gòu)。第18頁,共130頁。網(wǎng)狀結(jié)構(gòu)—結(jié)構(gòu)中的數(shù)據(jù)元素之間存在多對多的關(guān)系。數(shù)據(jù)元素之間的關(guān)系是一種多元關(guān)系,即多對多、多對一。9412631078310584538912345678
910工藝路線方案圖第19頁,共130頁。例4-3:交通網(wǎng)絡(luò)圖
從一個地方到另外一個地方可以有多條路徑。本問題是一種典型的網(wǎng)狀結(jié)構(gòu)問題,數(shù)據(jù)與數(shù)據(jù)成多對多的關(guān)系,是一種非線性關(guān)系結(jié)構(gòu)。佛山惠州廣州中山東莞深圳珠海圖1-2
網(wǎng)狀結(jié)構(gòu)第20頁,共130頁。
數(shù)據(jù)的存儲(物理)結(jié)構(gòu)定義:
是指數(shù)據(jù)在計算機(jī)內(nèi)部的存儲方式,它從物理存儲的角度來描述數(shù)據(jù)以及數(shù)據(jù)間的關(guān)系。常用種類:順序存儲結(jié)構(gòu)、鏈接存儲結(jié)構(gòu)。(1)順序存儲結(jié)構(gòu)
定義:
利用一組地址連續(xù)的存儲單元依次存放各數(shù)據(jù)元素。
第21頁,共130頁。第22頁,共130頁。特點(diǎn):1)存儲單元少,簡單易行,結(jié)構(gòu)緊湊。
2)數(shù)據(jù)結(jié)構(gòu)缺乏柔性,若要增刪數(shù)據(jù),必須重新分配存儲單元。應(yīng)用:查詢頻繁,修改、補(bǔ)充、刪除數(shù)據(jù)量小的場合。第23頁,共130頁。
用一組任意的存儲單元存儲數(shù)據(jù)元素(這組存儲單元可以是連續(xù)的,也可以是不連續(xù)的)。信息字段結(jié)構(gòu)形式:
一個數(shù)據(jù)元素項(結(jié)點(diǎn))由兩個字段組成
信息字段(INFO)和指針字段(POINT)指針字段信息字段
存放數(shù)據(jù)元素本身的域指針字段
存放直接后繼或直接前驅(qū)的域稱為指針域(point)。指針域中存儲的信息稱作指針。(2)鏈接式存儲結(jié)構(gòu)第24頁,共130頁。
鏈?zhǔn)酱鎯Y(jié)構(gòu)1536元素21536元素21346元素31346元素3∧元素4∧元素4存儲地址
存儲內(nèi)容
指針1345
元素114001346
元素4∧…….……..…….1400
元素21536…….……..…….1536
元素313461400元素1h1400元素1h第25頁,共130頁。structlink{charname;structlink*next};第26頁,共130頁。存儲結(jié)構(gòu)可獨(dú)立于邏輯結(jié)構(gòu)。存儲的物理順序不必與邏輯順序一致而仍能按邏輯要求存取數(shù)據(jù)。特點(diǎn):鏈接存儲結(jié)構(gòu)在不改變原來存儲結(jié)構(gòu)的條件下,增刪記錄十分方便,只要控制指針即可。根據(jù)指針的數(shù)目,鏈接存儲結(jié)構(gòu)有三種類型:單向鏈結(jié)構(gòu)
雙向鏈結(jié)構(gòu)多向鏈結(jié)構(gòu)第27頁,共130頁。在不改變原來存儲結(jié)構(gòu)的條件下,只要控制指針即可R1R2R3R4R5R6鏈接存儲結(jié)構(gòu)的記錄增刪R1R2R3R4R5鏈接存儲結(jié)構(gòu)的記錄增、刪
第28頁,共130頁。
數(shù)據(jù)的邏輯結(jié)構(gòu)
數(shù)據(jù)的存儲結(jié)構(gòu)數(shù)據(jù)的運(yùn)算:檢索、排序、插入、刪除、修改等
線性結(jié)構(gòu)
非線性結(jié)構(gòu)
順序存儲
鏈?zhǔn)酱鎯€性表棧隊列樹形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個方面第29頁,共130頁。數(shù)據(jù)的邏輯結(jié)構(gòu)非線性結(jié)構(gòu)集合圖狀結(jié)構(gòu)有向圖無向圖樹形結(jié)構(gòu)一般樹二叉樹線性結(jié)構(gòu)一般線性表線性表推廣廣義表數(shù)組串受限線性表棧和隊列圖1-5
數(shù)據(jù)邏輯結(jié)構(gòu)層次關(guān)系圖邏輯結(jié)構(gòu)與所采用的存儲結(jié)構(gòu)線性表樹圖順序存儲結(jié)構(gòu)鏈?zhǔn)酱鎯Y(jié)構(gòu)復(fù)合存儲結(jié)構(gòu)邏輯結(jié)構(gòu)物理結(jié)構(gòu)第30頁,共130頁。數(shù)據(jù)類型:在一種程序設(shè)計語言中,變量所具有的數(shù)據(jù)種類。例1、在C語言中,數(shù)據(jù)類型:基本類型和構(gòu)造類型基本類型:整型、浮點(diǎn)型、字符型構(gòu)造類型:數(shù)組、結(jié)構(gòu)、聯(lián)合、指針、枚舉型、自定義數(shù)據(jù)對象:某種數(shù)據(jù)類型元素的集合。例2、整數(shù)的數(shù)據(jù)對象是{…-3,-2,-1,0,1,2,3,…}英文字符類型的數(shù)據(jù)對象是{A,B,C,D,E,F(xiàn),…}
數(shù)據(jù)對象可以是有限的,也可以是無限的。第31頁,共130頁。
線性結(jié)構(gòu)是最常用、最簡單的一種數(shù)據(jù)結(jié)構(gòu)。而線性表是一種典型的線性結(jié)構(gòu)。其基本特點(diǎn)是線性表中的數(shù)據(jù)元素是有序且是有限的。在這種結(jié)構(gòu)中:①存在一個唯一的被稱為“第一個”的數(shù)據(jù)元素;②存在一個唯一的被稱為“最后一個”的數(shù)據(jù)元素;③除第一個元素外,每個元素均有唯一一個直接前驅(qū);④除最后一個元素外,每個元素均有唯一一個直接后繼。4.2.線性表第32頁,共130頁。
線性表(LinearList):是由n(n≧0)個數(shù)據(jù)元素(結(jié)點(diǎn))a1,a2,…an組成的有限序列。該序列中的所有結(jié)點(diǎn)具有相同的數(shù)據(jù)類型。其中數(shù)據(jù)元素的個數(shù)n稱為線性表的長度。當(dāng)n=0時,稱為空表。當(dāng)n>0時,將非空的線性表記作:(a1,a2,…an)a1稱為線性表的第一個(首)結(jié)點(diǎn),an稱為線性表的最后一個(尾)結(jié)點(diǎn)。線性表的定義4.2.線性表第33頁,共130頁。a1,a2,…ai-1都是ai(2≦i≦n)的前驅(qū),其中ai-1是ai的直接前驅(qū);ai+1,ai+2,…an都是ai(1≦i≦n-1)的后繼,其中ai+1是ai的直接后繼。第34頁,共130頁。線性表邏輯結(jié)構(gòu)
[a(1),a(2),a(3),…,a(i-1),a(i),a(i+1),…,a(n)]
其中,線性表中的數(shù)據(jù)元素ai(1≦i≦n)只是一個抽象的符號,其具體含義隨具體應(yīng)用的不同而不同。數(shù)據(jù)元素ai可以是一個數(shù),可以是一個符號,還可以是一個線性表,甚至是更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。4.2.1線性表的邏輯結(jié)構(gòu)第35頁,共130頁。線性表中的結(jié)點(diǎn)可以是單值元素(每個元素只有一個數(shù)據(jù)項)。例:26個英文字母組成的字母表:(A,B,C、…、Z)光軸軸徑系列值表示成線性表形式:(3,6,10,14,18,20,22,…,90)第36頁,共130頁。
線性表中的結(jié)點(diǎn)可以是記錄型元素,每個元素含有多個數(shù)據(jù)項,每個數(shù)據(jù)項稱為結(jié)點(diǎn)的一個域。每個元素有一個可以唯一標(biāo)識每個結(jié)點(diǎn)的數(shù)據(jù)項組,稱為關(guān)鍵字。例4:某校2001級同學(xué)的基本情況:{(‘2001414101’,‘張強(qiáng)’,‘男’,06/24/1983),
(‘2001414102’,‘張化司’,‘男’,08/12/1984)…,
(‘2001414102’,‘李利辣’,‘女’,08/12/1984)}第37頁,共130頁。
減速器明細(xì)表也屬線性表,該表中的數(shù)據(jù)元素是由4個數(shù)據(jù)項組成的一個記錄。第38頁,共130頁。若線性表中的結(jié)點(diǎn)是按值(或按關(guān)鍵字值)由小到大(或由大到小)排列的,稱線性表是有序的。第39頁,共130頁。
線性表是一種相當(dāng)靈活的數(shù)據(jù)結(jié)構(gòu),其長度可根據(jù)需要增長或縮短。對線性表的數(shù)據(jù)元素可以訪問、插入和刪除。
線性表的物理結(jié)構(gòu)(存儲結(jié)構(gòu))
既可以采用順序存儲,也可以采用鏈接存儲結(jié)構(gòu)。第40頁,共130頁。、線性表的順序存儲結(jié)構(gòu)1、順序存儲:把線性表的結(jié)點(diǎn)按邏輯順序依次存放在一組地址連續(xù)的存儲單元里。用這種方法存儲的線性表簡稱順序表。
假設(shè)線性表的每個元素需占用m個存儲單元。則線性表中第i+1個數(shù)據(jù)元素的存儲位置Loc(ai+1)和第i個數(shù)據(jù)元素的存儲位置Loc(ai)之間滿足下列關(guān)系:
Loc(ai+1)=Loc(ai)+m
aiai+1Loc(ai+1)m個字節(jié)Loc(ai)第41頁,共130頁。線性表的第i個數(shù)據(jù)元素ai的存儲位置為:a1a2aianLoc(a1)i-1個元素Loc(ai)=(i-1)*m+Loc(a1)
有序性:各數(shù)據(jù)元素之間的存儲順序與邏輯順序一致。均勻性:每個數(shù)據(jù)元素所占存儲空間的長度是相等的。線性表的順序存儲結(jié)構(gòu)的特點(diǎn)第42頁,共130頁。2順序表的基本操作
順序存儲結(jié)構(gòu)中,常用的線性表的操作:建表、查找、修改、插入、刪除、求長度等。以下將對幾種主要的操作進(jìn)行討論。1)建表staticcharlistc[6]={‘A’,’B’,’C’,’D’,’E’};2)訪問charc;C=listc[2];3)修改listc[2]=‘T’;第43頁,共130頁。在線性表L=(a1,…ai-1,ai,ai+1,…,an)中的第i(1≦i≦n)個位置上插入一個新結(jié)點(diǎn)e,使其成為線性表:
L=(a1,…ai-1,e,ai,ai+1,…,an)
4)順序線性表的插入為保證線性表的均勻性,新的數(shù)據(jù)元素必須和表內(nèi)已有元素的類型一致;為了保證線性表的有序性,原線性表第i至最后一個元素要向后移動一個數(shù)據(jù)元素所占存儲空間的長度。第44頁,共130頁。5)順序線性表的插入ABCXDE實現(xiàn)步驟(1)將線性表L中的第i個至第n個結(jié)點(diǎn)后移一個位置。(2)將結(jié)點(diǎn)e插入到結(jié)點(diǎn)ai-1之后。(3)線性表長度加1。[例4-5]插入一個數(shù)據(jù)元素ABCDE插入后第45頁,共130頁。#defineLEN6Main(){staticcharlistc[6]={‘A’,’B’,’C’,’D’,’E’};inti,j;charc1;
printf(“\n輸入插入新的數(shù)據(jù)元素:”);c1=getche();
printf(“\n輸入新的數(shù)據(jù)元素的位置:”);Scanf(“%d”,&i);For(j=LEN;j>i;j--)listc[j]=listc[j-1];Listc[j-1]=c1;}第46頁,共130頁。3)順序線性表的刪除第47頁,共130頁。3)順序線性表的刪除[例4-4]刪除一個數(shù)據(jù)元素。#defineLEN5Main(){staticcharlistc[5]={‘A’,’B’,’C’,’D’,’E’};inti,j;printf(“\n刪除第幾個數(shù)據(jù)元素?”);Scanf(“%d”,&i);For(j=i;j<LEN,;j++)listc[j-1]=listc[j];//第i個元素(下標(biāo)為i-1)開始
Listc[j]=‘\0’;}第48頁,共130頁。第49頁,共130頁。第50頁,共130頁。線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)為了能正確表示數(shù)據(jù)元素間的邏輯關(guān)系,在存儲每個數(shù)據(jù)元素的域同時,還必須存儲指示其后繼數(shù)據(jù)元素的地址(或位置)信息。在鏈表結(jié)構(gòu)中,一個數(shù)據(jù)元素由數(shù)據(jù)域和指針域組成,稱為一個結(jié)點(diǎn)。datanext數(shù)據(jù)域(data)指針域(next)第51頁,共130頁。線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)數(shù)據(jù)元素用指針來保存其直接前趨或直接后繼的地址,形成環(huán)環(huán)相扣的鏈條,并通過指針來逐個檢索數(shù)據(jù)元素。……...a1a2a3aiai+1annil
......a1a2aiai+1an(a1,a2,…ai,ai+1,…an)第52頁,共130頁。鏈接存儲結(jié)構(gòu)的記錄增、刪
在不改變原來存儲結(jié)構(gòu)的條件下,只要控制指針即可R1R2R3R4R5R6鏈接存儲結(jié)構(gòu)的記錄增刪R1R2R3R4R5第53頁,共130頁。根據(jù)指針的數(shù)目,鏈接存儲結(jié)構(gòu)有三種類型:單向鏈結(jié)構(gòu)
雙向鏈結(jié)構(gòu)多向鏈結(jié)構(gòu)第54頁,共130頁。2.單向鏈表單向鏈表的結(jié)點(diǎn)指針域中的指針存放該節(jié)點(diǎn)直接后繼的存放地址。第一個結(jié)點(diǎn)的地址存放在鏈表頭指針head中;鏈表的最后一個結(jié)點(diǎn)的指針城設(shè)為NULL。OFC如線性表為:L=(A,B,C,D,E,F(xiàn))A302BB06E663F∧DEFFC238OFCHEAD302B06238EFF663各個數(shù)據(jù)元素由一個指針域和一個數(shù)據(jù)域組成,通過指針構(gòu)成一個鏈狀結(jié)構(gòu),且鏈接方向單一。第55頁,共130頁。頭結(jié)點(diǎn):數(shù)據(jù)域不存放任何元素,其指針域存放第一個元素的存儲地址。頭指針:第一個數(shù)據(jù)元素的存儲地址;a1h頭結(jié)點(diǎn)
特點(diǎn):
存儲空間不一定連續(xù);元素之間的后繼關(guān)系是由指針來體現(xiàn)的;邏輯上相鄰,物理上不一定相鄰;
第56頁,共130頁。正向鏈:連接方向與邏輯順序相同反向鏈:連接方向與邏輯順序相反R1R2R3R4R5R1R2R3R4R5第57頁,共130頁。單向環(huán)鏈:最后一個數(shù)據(jù)元素與第一個數(shù)據(jù)元素通過指針鏈接.特點(diǎn):①可以從任意一個元素進(jìn)入,按指針逐個存取各條記錄;②某個指針損壞不影響整個結(jié)構(gòu)。單向環(huán)鏈R1R2R3R4R5第58頁,共130頁。結(jié)點(diǎn)的描述
C語言中用帶指針的結(jié)構(gòu)體類型來描述typedefstructLnode{intdata;/*數(shù)據(jù)域,保存結(jié)點(diǎn)的值*/structLnode*next;/*指針域*/}LNode;/*結(jié)點(diǎn)的類型*/2)結(jié)點(diǎn)的實現(xiàn)
結(jié)點(diǎn)是通過動態(tài)分配和釋放來的實現(xiàn),即需要時分配,不需要時釋放。分別使用C語言提供的標(biāo)準(zhǔn)函數(shù):malloc(),realloc(),sizeof(),free()。第59頁,共130頁。動態(tài)分配
p=(LNode*)malloc(sizeof(LNode));函數(shù)malloc分配了一個類型為LNode的結(jié)點(diǎn)變量的空間,并將其首地址放入指針變量p中。動態(tài)釋放
free(p);系統(tǒng)回收由指針變量p所指向的內(nèi)存區(qū)。P必須是最近一次調(diào)用malloc函數(shù)時的返回值。第60頁,共130頁。3)最常用的基本操作及其示意圖⑴結(jié)點(diǎn)的賦值
LNode*p;p=(LNode*)malloc(sizeof(LNode));p->data=20;p->next=NULL;p20NULL第61頁,共130頁。⑵常見的指針操作①q=p;操作前pa……q操作后②q=p->next;bpa……操作前操作后qbpa……③p=p->next;bpa……操作前操作后pba……bpa……第62頁,共130頁。操作前ypx……bqa…操作后ypx……bqa…④q->next=p;⑤q->next=p->next;操作前ypx……bqa…操作后ypx……bqa…第63頁,共130頁。
在鏈表建立過程中,首先要建立第一個結(jié)點(diǎn),然后不斷地在其尾部增加新結(jié)點(diǎn),直到不需再有新結(jié)點(diǎn),即尾指針指向NULL為止。定義結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu),有兩個成員DATA和NEXT:在數(shù)據(jù)域(data)中定義數(shù)據(jù)的類型,數(shù)據(jù)域中的數(shù)據(jù)可能只有一個也可能有多個,它們的類型可以一樣也可以不一樣,存放結(jié)點(diǎn)數(shù)據(jù)元素本身;在指針域(next)中定義指向數(shù)據(jù)結(jié)構(gòu)本身的指針,存放該結(jié)點(diǎn)直接后繼的地址。4)建立單向鏈表第64頁,共130頁。定義結(jié)構(gòu)指針變量:
structnode*p,*p1,*head;head:用來標(biāo)志鏈表頭;
p:在鏈表建立過程中,p總是不斷先接受系統(tǒng)動態(tài)分配的新結(jié)點(diǎn)地址。
p1—>next:存儲新結(jié)點(diǎn)的地址。然后通過動態(tài)分配內(nèi)存給每個結(jié)點(diǎn)賦值。申請動態(tài)分配一個存儲空間的表示形式為:
(structnode*)malloc(sizeof(structnode))4)建立單向鏈表第65頁,共130頁。鏈表建立的步驟:第-步:建立第一個結(jié)點(diǎn)structnode/*定義結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)*/{intdata;/*數(shù)據(jù)域*/structnode*next;}/*指向直接后繼的指針*/structnode*p,*p1,*head;/*定義結(jié)構(gòu)指針變量*/head=p1=p=(structnode*)malloc(sizeof(structnode);/*申請動態(tài)分配一個存儲地址,為第一個結(jié)點(diǎn)地址*/dataheadp,p1第66頁,共130頁。第二步:給第一個結(jié)點(diǎn)成員data賦值并產(chǎn)生第二個結(jié)點(diǎn)scanf(“%d”,&p—>data);
/*輸入10*/p=(structnode*)malloc(sizeof(structnode);datanextnext10第一結(jié)點(diǎn)第二結(jié)點(diǎn)headp1p鏈表建立的步驟:第67頁,共130頁。第三步:將第一個結(jié)點(diǎn)與第二個結(jié)點(diǎn)連接起來
p1—>next=p;10nextnextdata第一結(jié)點(diǎn)P1第二結(jié)點(diǎn)Pheadp1p鏈表建立的步驟:第68頁,共130頁。第四步:給第二個結(jié)點(diǎn)成員data賦值并產(chǎn)生第三個結(jié)點(diǎn)p1=p;scanf(“%d”,&p->data);/*輸入8*/p=(structnode*)malloc(sizeof(structnode);鏈表建立的步驟:10nextnext8第一結(jié)點(diǎn)第二結(jié)點(diǎn)p1第三結(jié)點(diǎn)pnext10第一結(jié)點(diǎn)headp18next第二結(jié)點(diǎn)p1datanext第三結(jié)點(diǎn)p第五步:將第二個結(jié)點(diǎn)與第三個結(jié)點(diǎn)連接起來
p1—>next=p;nextdata第69頁,共130頁。
以后步驟都是重復(fù)第四、五步,直到給出一個結(jié)束條件,不再建新的結(jié)點(diǎn)時,要有:
p—>next=NULL;它表示尾結(jié)點(diǎn)。第70頁,共130頁。[例4-6]建立鏈表。用C語言建立單向鏈表的程序如下:
#include<stdio.h>#include<alloc.h>#defineLENsizeof(structnode)structnode/*定義結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)*/{intdata;
structnode*next;
};
main(){structnode*p,*pl,*head;
head=p=(structnode*)malloc(LEN);/*申請動態(tài)分配一個存儲地址,為第一個結(jié)點(diǎn)地址*/scanf(“%d”,&p->data);/*輸入第一個結(jié)點(diǎn)的數(shù)據(jù)成員*/第71頁,共130頁。while(p->data!=0)/*結(jié)束條件:當(dāng)輸入0時,退出循環(huán)*/{p1=p;
p=(structnode*)malloc(LEN);/*申請動態(tài)分配一個存儲地址,為下一個結(jié)點(diǎn)地址*/scanf(”%d”,&p->data);
/*輸入中間結(jié)點(diǎn)數(shù)據(jù)成員*/p1->next=p;
/*中間結(jié)點(diǎn)的指針成員值,將前后兩個結(jié)點(diǎn)連接起來*/
}p->next=NULL;/*尾結(jié)點(diǎn)的指針成員值*/
……}第72頁,共130頁。
為了證實已建鏈表是所需要的,應(yīng)在上程序的省略處加入下列程序段:
p=head;/*頭指針*/printf(”鏈表數(shù)據(jù)成員是:”);/*鏈表顯示*/
while(p->next!=NULL){printf(”%d”,p->data);/*顯示中間結(jié)點(diǎn)數(shù)據(jù)成員*/
p=p->next;
}printf(”%d\n”,p->data);【結(jié)果】1086420/*建鏈表時輸入的數(shù)據(jù)*/鏈表數(shù)據(jù)成員是:1086420/*顯示所建的鏈表*/第73頁,共130頁。打印:沒找到訪問P開始輸入iP=head,j=0i=j+1P=P-﹥nextP為空嗎?i=j?返回返回YYNN5)單向鏈表的訪問訪問單向鏈表的第i個結(jié)點(diǎn),應(yīng)從表頭開始檢索.根據(jù)指針域的值逐個查直到找到第i個結(jié)點(diǎn)。第74頁,共130頁。5)單向鏈表的訪問[例4-7]對[例4-1]所建鏈表的第i個結(jié)點(diǎn)的訪問程序如下(注意:在調(diào)用之前,應(yīng)將p指向表頭):
visit(inti){Intj=1;intdata;Sructnode*p;p=head;while(p)/*當(dāng)結(jié)點(diǎn)指針非空時*/{if(j++==i)/*如果是第i個結(jié)點(diǎn)*/{data=p—>data;return;}/*將第i個結(jié)點(diǎn)數(shù)據(jù)保存在data中,返回*/第75頁,共130頁。p=p->next;/*結(jié)點(diǎn)指針指向下一結(jié)點(diǎn)*/}Pritnf(“\n序號超出范圍”);return(0);}第76頁,共130頁。
在鏈表中查找是否有指定的數(shù)據(jù)元素,若有就輸出第一次出現(xiàn)這個數(shù)據(jù)元素的邏輯位置,否則輸出沒由這個數(shù)據(jù)元素的信息。
[例4-8]查找指定數(shù)據(jù),程序如下
intsearch(){intj=1;intdata;sructnode*p;p=head;Pritnf(“\n輸入要查找的數(shù)據(jù):”);scanf(”%d”,&data);
/*輸入要查找的數(shù)據(jù)*/while(p)/*當(dāng)結(jié)點(diǎn)指針非空時*/{if(p—>data==data;return(j);)/*如果是第j個結(jié)點(diǎn)*/j++;6)單向鏈表查找第77頁,共130頁。p=p->next;/*結(jié)點(diǎn)指針指向下一結(jié)點(diǎn)*/}Pritnf(“\n沒找到該數(shù)據(jù)”);return(0);}第78頁,共130頁。
在單鏈表中刪除第i個結(jié)點(diǎn)的基本操作為:找到線性表中第i-1個結(jié)點(diǎn),修改其指向后繼的指針。ai-1ai+1ai-1q=p->next;(引入一個結(jié)點(diǎn)q)p->next=q->next;
e=q->data;delete(q);pq7)單向鏈表刪除第79頁,共130頁。[例4-8]刪除第i個結(jié)點(diǎn)。Voiddelete(inti){intj=1;sructnode*p,*q;p=q=head;if(i==1){head=q->next;free(q);return;}/*將頭結(jié)點(diǎn)指向第一個結(jié)點(diǎn)的后繼點(diǎn)*/while(p)/*當(dāng)結(jié)點(diǎn)指針非空時*/{if(++j==i-1)/*如果p是第i-1個結(jié)點(diǎn)*/{(q=p—>next;/*q指向第i個結(jié)點(diǎn)*/if(q==NULL){Pritnf(“\n序號超出范圍”);return;}p->next=q->next;/*將第i-1個結(jié)點(diǎn)指針指向第i+1個結(jié)點(diǎn)*/;
delete(q);return;}第80頁,共130頁。p=p->next;/*
如果p不是第i-1個結(jié)點(diǎn),結(jié)點(diǎn)指針指向下一結(jié)點(diǎn)*/}Pritnf(“\n序號超出范圍”);return(0);}第81頁,共130頁。
插入運(yùn)算是將值為x的新結(jié)點(diǎn)插入到表的第i個結(jié)點(diǎn)的位置上,即插入到ai-1與ai之間。xai-1ai8)單向鏈表插入
在單鏈表中的實現(xiàn):有序?qū)?/p>
<……ai-1,ai…>
改變?yōu)?/p>
<…ai-1,x,ai…>第82頁,共130頁。
插入運(yùn)算是將值為x的新結(jié)點(diǎn)插入到表的第i個結(jié)點(diǎn)的位置上,即插入到ai-1與ai之間。首先找到ai-1所在的結(jié)點(diǎn)node,然后生成一個數(shù)據(jù)域為x的新結(jié)點(diǎn)newnode,newnode結(jié)點(diǎn)作為node的直接后繼結(jié)點(diǎn),newnode結(jié)點(diǎn)的指針指向ai所在的結(jié)點(diǎn)。第83頁,共130頁。(1)查找到第i-1個節(jié)點(diǎn),將第i
個結(jié)點(diǎn)的地址node->next取出,存放在指針變量temp中,
即temp=node->next;(2)為新節(jié)點(diǎn)申請一個存儲空間,
newnode=(structnode*)malloc(LEN);(指針變量newnode指向該地址);
鏈表結(jié)點(diǎn)的插入過程:xnwenodeaitemp第84頁,共130頁。(3)將第i-1個節(jié)點(diǎn)的指針指向新節(jié)點(diǎn)的地址,
即將新結(jié)點(diǎn)的地址賦給第i-1個節(jié)點(diǎn)指針
node->next中,即node->next=newnode(4)將新節(jié)點(diǎn)的指針指向第i個節(jié)點(diǎn)的地址,即將原鏈表中第
i個節(jié)點(diǎn)的地址值賦給新結(jié)點(diǎn)指針newnode->next中,即newnode->next=tempxai-1xai-1ai第85頁,共130頁。[例4-9]在下面所建鏈表的第i個節(jié)點(diǎn)之前插入一個新結(jié)點(diǎn)的程序如下:第86頁,共130頁。Insert(structlink*node,inti,newdata)/*注意:在調(diào)用之前,應(yīng)將node指向表頭*/{intj=0;structlink*newnode,*temp;node=head;
/*給新結(jié)點(diǎn)動態(tài)分配內(nèi)存*/newnode=(structlink*)malloc(sizeof(structlink));newnode->data=‘X’;/*給新結(jié)點(diǎn)的數(shù)據(jù)域賦新值*/Wile(node)/*當(dāng)結(jié)點(diǎn)指針非空時*/{ifj++==i-1/*如果node是第i-1個結(jié)點(diǎn)*/第87頁,共130頁。{/*將第i個結(jié)點(diǎn)地址存放在temp中*/temp=node->next;/*將第i-1結(jié)點(diǎn)指針指向新節(jié)點(diǎn)的地址*/node->next=newnode;
/*新結(jié)點(diǎn)的指針指向第i個節(jié)點(diǎn)的地址*/newnode->next=temp;
return;}node=node->next;/*結(jié)點(diǎn)指針指向下一結(jié)點(diǎn)*/}}第88頁,共130頁。注意
(1)本節(jié)僅描述在某結(jié)點(diǎn)后插入,若想在某結(jié)點(diǎn)之前插入,怎么做??。
(2)在插入操作中,多增加了兩個結(jié)構(gòu)指針變量newnode,temp第89頁,共130頁。順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)的特點(diǎn)順序結(jié)構(gòu)存儲時,相鄰數(shù)據(jù)元素的存放地址也相鄰,即邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)是統(tǒng)一的,要求內(nèi)存中存儲單元的地址必須是連續(xù)的。優(yōu)點(diǎn):一般情況下,存儲密度大,存儲空間利用率高。缺點(diǎn):(1)在做插入和刪除操作時,需移動大量元素;(2)由于難以估計,必須預(yù)先分配較大的空間,往往使存儲空間不能得到充分利用;(3)表的容量難以擴(kuò)充。第90頁,共130頁。鏈?zhǔn)浇Y(jié)構(gòu)存儲時,相鄰數(shù)據(jù)元素可隨意存放,所占空間分為兩部分,一部分存放結(jié)點(diǎn)值,另一部分存放表示結(jié)點(diǎn)間關(guān)系的指針。優(yōu)點(diǎn):插入和刪除元素時很方便,使用靈活。缺點(diǎn):存儲密度小,存儲空間利用率低。第91頁,共130頁。
進(jìn)棧
出棧
棧頂
an
…
a3
a2
棧底
a1
圖4-13-
棧的邏輯結(jié)構(gòu)4.3.棧棧是一種特殊的線性表,它的插入與刪除操作只能在表的一端進(jìn)行。定義:棧頂:
棧底:棧的操作:
允許插入和刪除操作的一端稱為棧頂。
不允許插入和刪除操作的一端稱為棧底。
是按照后進(jìn)先出的原則進(jìn)行的。
棧的基本概念第92頁,共130頁。
進(jìn)棧
出棧
棧頂
an
…
a3
a2
棧底
a1
圖4-13-
棧的邏輯結(jié)構(gòu)
棧的邏輯結(jié)構(gòu):s=(a1,a2,a3,,…,,ai,…,an),則a1稱為棧底元素,an為棧頂元素。進(jìn)棧的順序:a1,a2,a3,,…,an
;出棧的順序是:an,an-1,…,a3,a2,a1。特點(diǎn):后進(jìn)先出(LIFO---LastInFirstOut)。第93頁,共130頁。工程手冊的數(shù)據(jù)處理
設(shè)計資料的處理方法有以下兩種:
(1)程序化。即在應(yīng)用程序內(nèi)部對這些數(shù)表及線圖進(jìn)行查表、處理或計算。具體處理方法有兩種,第一種數(shù)組化:將數(shù)表中的數(shù)據(jù)或線圖經(jīng)離散化后存入一維、二維或三維數(shù)組,用查表、插值等方法檢索所需數(shù)據(jù);第二種公式化:將數(shù)表或線圖擬合成公式,編入程序計算出所需數(shù)據(jù)。
(2)數(shù)據(jù)庫存儲。將數(shù)表及線圖(經(jīng)離散化)中的數(shù)據(jù)按數(shù)據(jù)庫中的規(guī)定進(jìn)行文件結(jié)構(gòu)化,如確定文件名、字段名、字段類型、字段寬度等,存放在數(shù)據(jù)庫中,數(shù)據(jù)獨(dú)立于應(yīng)用程序,但又能為所有應(yīng)用程序提供服務(wù)。第94頁,共130頁。3.1數(shù)表的程序化3.1數(shù)表的程序化公式化:適用數(shù)表有精確的計算公式找到原來的理論計算公式或經(jīng)驗公式,編入應(yīng)用程序程序化:本來就無表達(dá)公式,或一時難以找到原來公式,在設(shè)計手冊或規(guī)范中,有各種形式的數(shù)表,從函數(shù)角度看,有單變量表,也有雙變量及多變量表。第95頁,共130頁。3.1.1六個實例1.普通V帶型號及截面尺寸(見表3—1)
此表查表時,只有一個自變量,即型號,且為非數(shù)值型,查得的函數(shù)值為V帶的頂寬、帶高等,均為離散型實型數(shù)。程序化時可定義3個一維數(shù)組,并將表中數(shù)值填寫在程序中使數(shù)組初始化,再定義一個整型變量i代表型號以此類推。如用戶給定i=2(即A型),則程序可立即查出b[2]=13.0,h[2]=8.0,bp[2]=11.0.第96頁,共130頁。IntI;floatb[7]={6.0.10.13.0.17.0,22.0,32.0,38.0};
floath[7]={4.0.6.0,8.0,10.5,13.5,19.0,23.5};
floatbp[7]={5.3.8.5,11.0,14.0,19.0,27.0·32.0};第97頁,共130頁。2.平鍵和鍵槽的剖面尺寸第98頁,共130頁。2.平鍵和鍵槽的剖面尺寸
查表時,根據(jù)設(shè)計中計算出來的直徑dgiven
,決定它位于表3—2軸徑的哪個范圍內(nèi),由此查出b,h,t,t1的值。軸徑D是一個數(shù)值范圍,編程時可將它的上限或下限記入一維數(shù)組內(nèi),表中其余列的值也放入各自的一維數(shù)組內(nèi)。第99頁,共130頁。Int1;floatdgiven.h,h,t.Tl;/*driven為已知軸徑*/float:D[12]一·{10.0.12.O,…,75.0,85.0);/*float:kb[112]一{3.0,4.0,…,20.O,22.O};/*floatkh[2]一{3.0,4.O,·一,12.O,14.0);/*存放表中D的上}存放表中6值*/存放表中^值*/第100頁,共130頁。第101頁,共130頁。3.包角影響系數(shù)K2(見表3—3)3.包角影響系數(shù)K2(見表3—3)
查表時根據(jù)a查K2值,a和K2、均為數(shù)值型,可設(shè)計兩個一維數(shù)組來實現(xiàn)。但因計算所得的實際包角a。可能不會正好是表3—3中所列的a值,自然相應(yīng)的K2值也不會正好是表中之值,因此要用一元函數(shù)插值求解(后面將敘述)。已知包角值為口1,定義兩個一維數(shù)組:floataIpha.[1O]={90.O,100.O,…,170.O,180.0);floatK2[1O]一(O.68,O.74,…,·O.98,1.oo};調(diào)用一元函數(shù)的插值函數(shù)(見3.1.2節(jié)),即可求出實際的系數(shù)值。第102頁,共130頁。4.齒輪傳動工況系數(shù)KA(見表3—4)第103頁,共130頁。決定工況系數(shù)KA值時有兩個自變量,即原動機(jī)的載荷特性和工作機(jī)的載荷特性,它們原本無數(shù)值概念,現(xiàn)分別定義整型變量主一O~2及歹一O~2代表不同工況,用一個二維數(shù)組KK(3,3)記錄表中系數(shù)值。因為表中自變量及函數(shù)的值均為離散值,因此查表時無須插值。有關(guān)變量及數(shù)組的定義如下:
floatKA;/*查得的系數(shù)值*/
inti,j;’
floatKK[3][3]={{1.O,1.25,1.75},{1.25,1.5,2.O},{1.5,1.75,2.25}}第104頁,共130頁。圖3—3齒輪傳動工況系數(shù)KA查表流程圖第105頁,共130頁。表3-5軸肩圓角處理論應(yīng)力集中系數(shù)αα第106頁,共130頁。
決定系數(shù)αα?xí)r有兩個自變量,即r/d和D/d,因此這是一個二維查表問題。將表中系數(shù)αα值記錄在一個二維數(shù)組AA(6,10)中。這個查表問題的特殊之處是兩個自變量及系數(shù)αα均有可能是連續(xù)量,這是因為由設(shè)計所得的D,d及r值在一定范圍內(nèi)是隨機(jī)的,因此必須采用二元函數(shù)插值。實際編程時,設(shè)已知Dgiven,dgiver,rgiven,再定義及初始化二維數(shù)組AA(6,1O),調(diào)用二元插值函數(shù)(見3.1.3節(jié))即可求得實際的αα值。第107頁,共130頁。第108頁,共130頁。3.3數(shù)表的公式化處理改寫成為:可見,g(x)是兩個基本插值多項式的線性組合。
線性插值
(兩點(diǎn)插值)X
x1x2x3……….xn
Y
y1y2y3……….yn
列表函數(shù)第109頁,共130頁。
線性插值C語言函數(shù)程序floatinter(floatx,floatx1,floatx2,floaty1,floaty2){floaty;y=y1+(y2-y1)/(x2-x1)*(x-x1);return(y);}第110頁,共130頁。拋物線插值(三點(diǎn)插值)
第111頁,共130頁。拋物線插值(三點(diǎn)插值)
第112頁,共130頁。拉格朗日插值(多點(diǎn)插值)第113頁,共130頁。函數(shù)擬合
:函數(shù)插值存在的不足:①嚴(yán)格通過每個結(jié)點(diǎn),復(fù)印了原有的結(jié)點(diǎn)誤差;②仍需將各結(jié)點(diǎn)數(shù)據(jù)進(jìn)行存貯,占用存貯空間。函數(shù)擬合:曲線不要求通過已知結(jié)點(diǎn),僅反映數(shù)據(jù)變化趨勢。1
、拉格朗日插值曲線2、函數(shù)擬合曲線第114頁,共130頁。最小二乘法函數(shù)擬合:曲線到各結(jié)點(diǎn)誤差平方和最小。步驟:
1)在坐標(biāo)紙上繪出各結(jié)點(diǎn),根據(jù)其趨勢繪制曲線圖形;
2)確定近似函數(shù),可為多項式、對數(shù)函數(shù)或指數(shù)函數(shù)等;
3)用最小二乘法求出待定系數(shù)。誤差函數(shù):求導(dǎo)數(shù):解方程求得方程系數(shù)a,b:例:直線段f(x)=a+bx的擬合:第115頁,共130頁。指數(shù)函數(shù)最小二乘法擬合:
y=abx
對上式兩邊取對數(shù),轉(zhuǎn)化為線性函數(shù):
lgy=lga+xlgb令:y’=lgy,u=lga,v=lgb,則:
y’=u+vx求出線性方程系數(shù)u和v,再根據(jù)u,v求出a和b,可得:
y=abx第116頁,共130頁。3.4
數(shù)據(jù)庫在CAD/CAM作業(yè)中的應(yīng)用
VisualFoxPro數(shù)據(jù)庫管理系統(tǒng)
是一種關(guān)系型模式,為目前應(yīng)用最廣泛的微機(jī)型系統(tǒng),被稱之為大眾型數(shù)據(jù)庫管理系統(tǒng);提供友好的集成環(huán)境,具有Windows窗口功能;可通過系統(tǒng)菜單、工具條或命令窗口進(jìn)行數(shù)據(jù)庫的創(chuàng)建、維護(hù)和各種應(yīng)用操作,包括數(shù)據(jù)記錄的輸入、修改、插入、刪除、剪切、拷貝、粘貼等作。有較強(qiáng)的數(shù)據(jù)管理功能、豐富的開發(fā)工具,用戶可利用編輯器、設(shè)計器、項目管理器等工具,開發(fā)功能齊全的應(yīng)用程序。第117頁,共130頁。FoxPro數(shù)據(jù)類型
—字符型(character):用于表示包括漢字和各類字符在內(nèi)的字符型變量數(shù)值,一個字符占用一個字節(jié),字符型變量最多為254個字節(jié)。
—數(shù)字型(numeral):用于表示包括正號、負(fù)號、小數(shù)點(diǎn)及0-9的數(shù)字型變量的數(shù)值,占用8個字節(jié)的內(nèi)存。
—日期型(Data):用于表示月、日、年的日期型變量的數(shù)值,占8個字節(jié)。
—邏輯型(logical):用于表示由邏輯真或邏輯假構(gòu)成的邏輯型變量的數(shù)值,只用1個字節(jié)。
—備注型(Memory):用于存放由可變長度的ASCⅡ碼組成的字段的數(shù)值,用10字節(jié)引用備注文件。
—貨幣型(Current):用于表示貨幣值的變量數(shù)值,占用8個字節(jié)。
—
通用型(General):用于存放OLE對象的數(shù)值,占用10字節(jié)。
第118頁,共130頁。數(shù)據(jù)庫的應(yīng)用實例
支承塊(GB2235-80)數(shù)據(jù)庫表文件第119頁,共130頁。數(shù)據(jù)庫的應(yīng)用實例
表3-9深溝球軸承輕(2)系列軸承型號尺寸/mm安裝尺寸mm額定動負(fù)荷kN額定靜負(fù)荷kN極限轉(zhuǎn)速r/minDDBD1D32001030915254.702.702600020112321017274.802.702400020215351120306.003.552200020317401222357.504.5020000204204714264110.006.3018000205255215314611.007.1016000206306216365615.2010.2013000207357217426520.1013.9011000208408018477325.6018.1010000209458519527825.6018.109000210509020578327.5020.208500
深溝球軸承第120頁,共130頁。數(shù)據(jù)庫結(jié)構(gòu)定義:數(shù)據(jù)記錄輸入:
APPEND
或:EDIT
或:BROWSE軸承型號:內(nèi)徑d:外徑D:寬度B:軸肩D1:孔徑D3:動負(fù)荷:第121頁,共130頁。3·1.2一元函數(shù)的插值設(shè)有一用數(shù)據(jù)表格給出的列表函數(shù)y--f(x),如表3—7所示。表3·7列表函數(shù)由于列表函數(shù)只能給出結(jié)點(diǎn)z·,z2,…,z"處的函數(shù)值y。,y2,…'Yn當(dāng)自變量為結(jié)點(diǎn)的中間值時,就要用插值法求取其函數(shù)值。插值法的基本思想是在插值點(diǎn)附近選取幾個合適的結(jié)點(diǎn),過這些選取的點(diǎn)構(gòu)造一個簡單函數(shù)g(z),在此小段上用g(z)代替原來函數(shù)廠(z),這樣插值點(diǎn)的函數(shù)值就用g(z)的值來代替。因此,插值的實質(zhì)問題是如何構(gòu)造一個既簡單又具有足夠精度的函數(shù)g(z)。第122頁,共130頁。
條件是給定z,求其函數(shù)值Y。由圖3—4可知,步驟如下:圖3—4線性插值示意圖
(1)選取網(wǎng)個相鄰自變量Xi與zH1,滿足條件zi<z<zi+l;
(2)過(zi,Yi)及(zm,Yi+·)兩點(diǎn)連直線參(z)代替原來的函數(shù)廠(z),則y為了一警(x--x,)+yi(3—1)
。Zi+1一Zi’。,為了與后面拋物線插值的公式在形式上取得一致,可將公式(3—1)改寫成.(3-2)第123頁,共130頁。從圖3—4可以看出,這種插值存在一定誤差,但當(dāng)表格中自變量間隔較小,而插值精度又不要求很高時,是可以滿足使用要求的。線性插值程序的流程圖見圖3—5。符號說明如下:
z(行),y(咒)——一維數(shù)組,存放列表函數(shù)中z,了值;九——列表函數(shù)中結(jié)點(diǎn)數(shù);
z咖en,ygiven——已知的z插入值及求出的函數(shù)值。..藉讀者注意,C語言中一維數(shù)組下標(biāo)是從0開始的,但圖
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)辦公樓宇的智慧安防解決方案
- 學(xué)校管理的數(shù)字化轉(zhuǎn)型及其在教育服務(wù)中的應(yīng)用實踐案例分享
- 2026屆湖北省黃岡市浠水縣實驗高級中學(xué)化學(xué)高二第一學(xué)期期末監(jiān)測模擬試題含答案
- 綠色化學(xué)與可持續(xù)性
- 煤焦分析考試題庫及答案
- cisp考試題庫及答案多選
- 2026屆山西省重點(diǎn)中學(xué)協(xié)作體化學(xué)高一上期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 吉林省“五地六?!焙献黧w2026屆化學(xué)高二上期末監(jiān)測試題含答案
- 大果沙棘繁育及栽培技術(shù)應(yīng)用實踐及存在的問題探究
- 新解讀《GB-T 39153 - 2020亞穩(wěn)分解強(qiáng)化銅 - 鎳 - 錫合金棒材》
- 2025年全國特種設(shè)備安全管理人員A證考試練習(xí)題庫(1300題)含答案
- 策劃創(chuàng)意合同協(xié)議
- 《加快實施綠色公路建設(shè)的指導(dǎo)建議意見》干院宣講宣講專題培訓(xùn)課件
- 精益生產(chǎn)6S管理
- 國際壓力性損傷-潰瘍預(yù)防和治療臨床指南(2025年版)解讀
- 《集中用餐單位落實食品安全主體責(zé)任監(jiān)督管理規(guī)定》解讀與培訓(xùn)
- 藥店店員禮儀培訓(xùn)
- 個人受托支付合同標(biāo)準(zhǔn)文本
- (高清版)DB1331∕T 071-2024 《雄安新區(qū)林業(yè)有害生物監(jiān)測調(diào)查技術(shù)規(guī)程》
- 《護(hù)士職業(yè)生涯規(guī)劃與發(fā)展指南》
- 2025年保安證考試復(fù)習(xí)資料試題及答案
評論
0/150
提交評論