工程數(shù)據(jù)處理與數(shù)據(jù)管理_第1頁
工程數(shù)據(jù)處理與數(shù)據(jù)管理_第2頁
工程數(shù)據(jù)處理與數(shù)據(jù)管理_第3頁
工程數(shù)據(jù)處理與數(shù)據(jù)管理_第4頁
工程數(shù)據(jù)處理與數(shù)據(jù)管理_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

工程數(shù)據(jù)處理與數(shù)據(jù)管理第1頁/共130頁在機(jī)械設(shè)計過程中,往往需要從有關(guān)的工程手冊或設(shè)計規(guī)范中查找各種系數(shù)或數(shù)據(jù)。傳統(tǒng)方法:設(shè)計人員手工查取,費時、繁瑣現(xiàn)代設(shè)計方法:計算機(jī)處理中心問題:如何將這種人工查找轉(zhuǎn)變成在CAD進(jìn)程中的高效、快速處理?!?工程數(shù)據(jù)處理與管理第2頁/共130頁程序化:在編程時將數(shù)據(jù)以一定的形式直接放于程序中,如賦值操作。將數(shù)表中的數(shù)據(jù)或線圖經(jīng)離散化后存入一維、二維或三維數(shù)組,用查表、插值等方法檢索所需數(shù)據(jù);將數(shù)表或線圖擬合成公式,編入程序計算出所需數(shù)據(jù)。特點:程序與數(shù)據(jù)結(jié)合在一起缺點:數(shù)據(jù)無法共享,增大程序的長度。工程數(shù)據(jù)處理的方法:§5工程數(shù)據(jù)處理與管理第3頁/共130頁文件化處理:將數(shù)據(jù)放于擴(kuò)展名為.dat的數(shù)據(jù)文件中,需要數(shù)據(jù)時,由程序來打開文件并讀取數(shù)據(jù)。特點:數(shù)據(jù)與程序作了初步的分離,實現(xiàn)了有條件的數(shù)據(jù)共享。缺點:(1)文件只能表示事物而不能表示事物之間的聯(lián)系;(2)文件較長;(3)數(shù)據(jù)與應(yīng)用程序之間仍有依賴關(guān)系;(4)安全性和保密性差。§5工程數(shù)據(jù)處理與管理第4頁/共130頁數(shù)據(jù)庫存儲--將數(shù)表及線圖(經(jīng)離散化)中的數(shù)據(jù)按數(shù)據(jù)庫的規(guī)定進(jìn)行文件結(jié)構(gòu)化,存放在數(shù)據(jù)庫中。如確定字段名、字段類型、字段寬度等--數(shù)據(jù)獨立于應(yīng)用程序,又能為所有應(yīng)用程序提供服務(wù),這是大規(guī)模工程數(shù)據(jù)的主要處理方法。特點:

(1)數(shù)據(jù)共享(2)數(shù)據(jù)集中(3)數(shù)據(jù)結(jié)構(gòu)化,即表示了事物,又表示了事物之間的聯(lián)系(4)數(shù)據(jù)與應(yīng)用程序無關(guān)(5)安全性和保密性好§5工程數(shù)據(jù)處理與管理第5頁/共130頁§5工程數(shù)據(jù)處理與管理第6頁/共130頁數(shù)表的類型:膠帶型號OABCDEFKb(10-3)0.290.771.995.6319.9537.3596.10表1三角膠帶彎曲影響系數(shù)Kb

§5.1數(shù)表的程序化數(shù)表中的數(shù)據(jù)是獨立的且只與一個因素有關(guān)第7頁/共130頁§5.1數(shù)表的程序化

表2齒輪傳動工況系數(shù)KA

表中決定工況系數(shù)KA的值時有兩個自變量,即原動機(jī)的載荷特性和工作機(jī)的載荷特性。表中自變量及函數(shù)的值均為離散。

工作機(jī)載荷特性

工況系數(shù)原動機(jī)載荷KK(I,J)特性工作平穩(wěn)中等沖擊較大沖擊J=0J=1J=2KK(I,0)KK(I,1)KK(I,2)工作平穩(wěn)I=0KK(0,J)1.01.251.75中等沖擊I=1KK(1,J)1.251.52.0較大沖擊I=2KK(2,J)1.51.752.25第8頁/共130頁§5.1數(shù)表的程序化(度)901001101201301401501601701800.680.740.790.830.860.890.920.950.981.00表3包角影響系數(shù)

第9頁/共130頁表4軸肩圓角處理論應(yīng)力集中系數(shù)

r/dD/d6.03.02.01.501.201.101.051.031.021.010.042.592.402.332.212.092.001.881.801.721.010.101.881.801.731.681.621.591.531.491.441.360.151.641.591.551.521.481.461.421.381.341.260.201.491.461.441.421.391.381.341.311.271.200.251.391.371.351.341.331.311.291.271.221.170.301.321.311.301.291.271.261.251.231.201.14§5.1數(shù)表的程序化第10頁/共130頁

表格維數(shù)數(shù)表分類依據(jù)數(shù)據(jù)間有無函數(shù)關(guān)系

1、簡單數(shù)表:數(shù)表只記錄某些對象的各自獨立的常數(shù),突出的特點是數(shù)表中各個數(shù)據(jù)之間彼此獨立,數(shù)據(jù)與自變量之間無明確的函數(shù)關(guān)系。

2、列表函數(shù)數(shù)表:參數(shù)之間明顯存在某種函數(shù)關(guān)系yi=f(xi),但不能用明確的表達(dá)式進(jìn)行表達(dá)。§5.1數(shù)表的程序化第11頁/共130頁只有一個自變量,即型號,定義一個整型變量i代表型號定義4個一維數(shù)組一維簡單數(shù)表(只由一個已知變量查取所需數(shù)據(jù)的表格)§5.1數(shù)表的程序化簡單數(shù)表的程序化第12頁/共130頁§5.1數(shù)表的程序化第13頁/共130頁決定工況系數(shù)KA值時有兩個自變量,即原動機(jī)的載荷持性和工作機(jī)的載荷特性,各有三種情況二維簡單數(shù)表(由兩個已知條件查取所需數(shù)據(jù)的表格)§5.1數(shù)表的程序化

工作機(jī)載荷特性

工況系數(shù)原動機(jī)載荷KK(I,J)特性工作平穩(wěn)中等沖擊較大沖擊J=0J=1J=2KK(I,0)KK(I,1)KK(I,2)工作平穩(wěn)I=0KK(0,J)1.01.251.75中等沖擊I=1KK(1,J)1.251.52.0較大沖擊I=2KK(2,J)1.51.752.25表

齒輪傳動工況系數(shù)KA第14頁/共130頁程序?qū)崿F(xiàn)§5.1數(shù)表的程序化用一個二維數(shù)組KA[3][3]記錄表中系數(shù)值,再定義兩個整型變量i,j分別代表原動機(jī)和工作機(jī)載荷特性,通過i,j值,檢索出所需的工況系數(shù)。

KK[3][3]={{1.0,1.25,1.75},{1.25,1.5,3.0},{1.5,1.75,3.25}};第15頁/共130頁檢索齒輪傳動工況系數(shù)C語言程序:#include<stdio.h>main(){inti,j;floatka[3][3]={{1.0,1.25,1.75},{1.25,1.5,2.0},{1.5,1.75,2.25}};while(1){printf(“請輸入原動機(jī)的載荷特性(0,1,2):”);scanf(“%d”,&i);

if(i>=0&&i<=2)break;

}

while(1)

{printf(“請輸入工作機(jī)的載荷特性(0,1,2):”);

scanf(“%d”,&j);

if(j>=0&&j<=2)break;

}

printf(“您檢索的齒輪工況系數(shù)為%f,”,ka[i][j]);}§5.1數(shù)表的程序化第16頁/共130頁查的的包角可能不會正好是表中所列的值應(yīng)調(diào)用一元函數(shù)插值求解!最好找到原來的計算公式來處理一維函數(shù)數(shù)表§5.1數(shù)表的程序化(度)901001101201301401501601701800.680.740.790.830.860.890.920.950.981.00表

包角影響系數(shù)

第17頁/共130頁表中D/d及r/d值在一定范圍內(nèi)是隨機(jī)的,必須采用二元函數(shù)插值實際編程時,設(shè)已知D,d,r,在定義二維數(shù)組AA[6][10],調(diào)用二元插值函數(shù),即可求得應(yīng)力集中系數(shù)D/dr/d二維函數(shù)數(shù)表§5.1數(shù)表的程序化第18頁/共130頁列表函數(shù)的程序化一元列表函數(shù)的插值線性插值拋物線插值二元列表函數(shù)的插值直線-直線插值拋物線-直線插值拋物線-拋物線插值§5.1數(shù)表的程序化第19頁/共130頁插值定義:設(shè)函數(shù)y=f(x)在區(qū)間【a,b】上有定義,且已知在點a<=x0<x1<…<xn<=b上的值y0,y1,…,yn,若存在一個簡單的函數(shù)g(x),使p(xi)=yi(i=0,1,2,…,n)成立,就稱g(x)為f(x)的插值函數(shù)。整體插值誤差大!因此常采用分段插值方法§5.1數(shù)表的程序化誤差oyxyyxxyxiii+1i+1f(x)g(x)第20頁/共130頁插值法的基本思想:在插值點附近選取幾個合適的結(jié)點,過這些選取的點構(gòu)造一個簡單函數(shù)g(x),在此小段上用g(x)代替原來函數(shù)f(x),這樣插值點的函數(shù)值就用g(x)的值來代替。插值的實質(zhì)問題:是如何構(gòu)造一個既簡單又具有足夠精度的函數(shù)g(x)?!?.1數(shù)表的程序化第21頁/共130頁一元列表函數(shù)插值設(shè)有設(shè)有一用數(shù)據(jù)表格給出的列表函數(shù)y=f(x)由于列表函數(shù)只能給出結(jié)點x1,x2,…,xn處的函數(shù)值y1,y2,…,yn,當(dāng)自變量為結(jié)點的中間值時,就要用插值法求取其函數(shù)值。插值法的基本思想:在插值點附近選取幾個合適結(jié)點,過這些點構(gòu)造一簡單函數(shù)g(x),在此區(qū)間用g(x)

的值來代替原函數(shù)f(x),因此插值的本質(zhì)問題是如何構(gòu)造一個簡單且精度足夠的函數(shù)g(x)。插值方法很多,在此主要介紹線性插值和二次插值?!?.1數(shù)表的程序化xx0x1x2……xixi+1……xnyy0y1y2……yiyi+1……yn第22頁/共130頁設(shè)有一維列表函數(shù)數(shù)表如下:yi=f(xi)i=0,1,2,……n,給定一值x(xi<x<xi+1),求其函數(shù)值y。xx0x1x2……xixi+1……xnyy0y1y2……yiyi+1……yn§5.1數(shù)表的程序化誤差oyxyyxxyxiii+1i+1f(x)g(x)一維數(shù)表線性插值第23頁/共130頁線性插值§5.1數(shù)表的程序化第24頁/共130頁線性插值C++程序//p.x已知,求p.yboolGetValue_Line(constpointp1,constpointp2,point&p){

if(p.x<p1.x||p.x>p2.x)

returnfalse;

doubleA1x=(p.x–p2.x)/(p1.x–p2.x);doubleA2x=(p.x–p1.x)/(p2.x–p1.x); p.y=A1x*p1.y+A2x*p2.y;

returntrue;}§5.1數(shù)表的程序化第25頁/共130頁線性插值C程序floatinter(floatx,floatx1,floatx2,floaty1,floaty2){floaty;y=y1+(y2-y1)/(x2-x1)*(x-x1);return(y);}§5.1數(shù)表的程序化第26頁/共130頁一維數(shù)表拋物線插值§5.1數(shù)表的程序化27

方法簡單,但存在一定誤差。當(dāng)表格中自變量間隔較小,且f(x)在[xi,xi+1]上變化比較平緩,否則,線性插值的誤差可能很大。無法滿足使用要求。

第27頁/共130頁一維數(shù)表拋物線插值插值多項式幾何解釋

用通過三點所作得拋物線g(x)來近似替代(或逼近)原有函數(shù)f(x)§5.1數(shù)表的程序化第28頁/共130頁拋物線插值公式推導(dǎo):§5.1數(shù)表的程序化第29頁/共130頁拋物線插值§5.1數(shù)表的程序化第30頁/共130頁選取三個合適的插值點原則選取得三個插值點與待求得插值點臨近步驟拋物線插值§5.1數(shù)表的程序化第31頁/共130頁§5.1數(shù)表的程序化第32頁/共130頁//p.x已知,求p.yboolGetValue_Parabola1(constpointp1,constpointp2,constpointp3,point&p)//或constpoint[3],point&p{

if(p.x<p1.x||p.x>p3.x)

returnfalse;

doubleA1x=(p.x–p2.x)*(p.x–p3.x)/(p1.x–p2.x)*(p1.x–p3.x); doubleA2x=(p.x–p1.x)*(p.x–p3.x)/(p2.x–p1.x)*(p2.x–p3.x); doubleA3x=(p.x–p2.x)*(p.x–p1.x)/(p3.x–p2.x)*(p3.x–p1.x); p.y=A1x*p1.y+A2x*p2.y+A3x*p3.y;returntrue;}§5.1數(shù)表的程序化第33頁/共130頁§5.1數(shù)表的程序化一維數(shù)表拉格朗日n次多項式插值:第34頁/共130頁§5.1數(shù)表的程序化一維數(shù)表拉格朗日n次多項式插值:第35頁/共130頁一維數(shù)表拉格朗日n次多項式插值:§5.1數(shù)表的程序化第36頁/共130頁當(dāng)n=1時為線性插值當(dāng)n=2時為拋物線插值§5.1數(shù)表的程序化一維數(shù)表拉格朗日n次多項式插值:第37頁/共130頁在三維空間選定幾個點,通過這些點構(gòu)造一塊曲面g(x,y),用它近似的表示在這塊區(qū)間內(nèi)原有的曲面f(x,y)二元列表函數(shù)的插值§5.1數(shù)表的程序化第38頁/共130頁直線-直線插值

(即雙線性插值)插值步驟如下:根據(jù)k點的(xk,yk)找出周圍四個點a,b,c,d,并且有以下關(guān)系式:xa=xc;xb=xdya=yb;yc=ydxa<xk<xb;ya<yk<yc找出對應(yīng)于a,b,c,d的A,B,C,D,過A、B用線性插值求得點E,再過C、D用線性插值求得F點。過E、F再用線性插值求得K點,此即為所求。

§5.1數(shù)表的程序化第39頁/共130頁拋物線-直線插值§5.1數(shù)表的程序化第40頁/共130頁§5.1數(shù)表的程序化拋物線-拋物線插值

3、拋物線—拋物線插值插值過程如左圖,步驟如下:(1)根據(jù)k點的(xk,yk)找出周圍四個點a,b,c,d,再根據(jù)拋物線插值的取點方法擴(kuò)大為九個點,即增加e、f、r、s、t五個點。(2)求取對應(yīng)的A、B、C、D、E、F、R、S、T九點,分別過A、B、E用拋物線插值求取插值點U,過C、D、F求取V,過R、S、T求取W。(3)過U、V、W做拋物線插值得K,即為所求。第41頁/共130頁例1:已知數(shù)表如下圖所示:分別用直線、拋物線插值法求解當(dāng)x=2.05時的y值。

x0x1x2x3x4x5x6

解:(1)直線∵2.00<x=2.05<2.09

x2.592.402.332.212.092.001.88y1.881.801.731.681.621.591.532.05第42頁/共130頁(2)拋物線

∵2.00<x=2.05<2.09

且︱2.05-2.00︱>︱2.05-2.09︱∴取2.21、2.09、2.00三點即x4、x5、x6第43頁/共130頁已知列表函數(shù)數(shù)表如下,用線性和拋物線插值2種方法求X=80處的函數(shù)值。X1X2X3X4X5xi03570105140yi04085115130解:線性插值法:第44頁/共130頁2.拋物線插值法:第45頁/共130頁在工程設(shè)計中,時常遇到一些線圖供查找系數(shù)或參數(shù)等使用,如齒輪傳動的動裁荷系數(shù)有些還以曲線族的形式給出,例如根據(jù)齒輪在軸上不同的布置方式,根據(jù)齒寬系數(shù)查找齒向載荷系數(shù)的一族曲線?!?.2線圖的程序化第46頁/共130頁線圖類型:①線圖所表示的各參數(shù)之間本來就有計算公式,只是由于計算公式復(fù)雜,為了便于手工計算將公式繪成線圖。螺旋角系數(shù)§5.2線圖的程序化第47頁/共130頁②線圖所表示的各參數(shù)之間沒有或找不到計算公式齒形系數(shù)§5.2線圖的程序化第48頁/共130頁解決方法:①對于形式1,找到原有公式,將公式編寫成程序;②對于形式2,將線圖離散化為數(shù)表,然后利用數(shù)表的處理方法進(jìn)行處理;③對于形式2,用曲線擬合的方法求出線圖的擬合公式(經(jīng)驗公式),再將公式編寫成程序?!?.2線圖的程序化第49頁/共130頁處理過程線圖轉(zhuǎn)換為數(shù)表編制程序處理數(shù)表線圖的處理---數(shù)表化§5.2線圖的程序化齒輪齒向載荷分布系數(shù)Kβ值的線圖第50頁/共130頁轉(zhuǎn)化后的齒向載荷分布系數(shù)的數(shù)表齒寬系數(shù)的數(shù)表化§5.2線圖的程序化第51頁/共130頁齒寬系數(shù)數(shù)表的程序化三種方式:1)一維數(shù)組,8個;2)一個二維數(shù)組;3)一個三維數(shù)組KB=Data[K3*2+K4][PD];(K3=0~3;K4=0~1;PD=0~7)§5.2線圖的程序化第52頁/共130頁intmain(){intK3,K4;//K3=0~3;K4=0~2doublePD;doubleKb;doubleD[]={0.2,0.4,…,1.6};doubleData[4][2][8]={{{0,1,1.005,…,1.13},{…}},{{…},{…}},{…},{…}};while(1){//獲取K3輸入

scanf(&K3);if(K3<=3&&K3>=0)break;}//…獲得其他輸入

intindex=GetIndex(D,PD);

Kb=Data[K3][K4][index];}齒寬系數(shù)數(shù)表的程序化§5.2線圖的程序化第53頁/共130頁齒輪傳動的動裁荷系數(shù)kv值的線圖線圖的處理——公式化§5.2線圖的程序化第54頁/共130頁整理得即在b圖中標(biāo)有“7”級精度的直線上取兩點,如x1=2,y1=1.09,x2=10,y2=1.47

代入兩點式直線方程1)直角坐標(biāo)系線圖§5.2線圖的程序化第55頁/共130頁普通v帶選型圖§5.2線圖的程序化第56頁/共130頁對于圖中的80~100A直線段,取其上兩點的坐標(biāo),

x1=1,y1=和x2=6.3,y2=1600

代入下列兩點式直線方程

經(jīng)整理后得即2)對數(shù)坐標(biāo)系線圖的公式化處理§5.2線圖的程序化第57頁/共130頁3)區(qū)域圖的公式化處理1、按區(qū)域圖的中線取值齒面硬度HB§5.2線圖的程序化第58頁/共130頁3)區(qū)域圖的公式化處理2、按區(qū)域圖的位置取值齒面硬度HB§5.2線圖的程序化第59頁/共130頁

實際問題的復(fù)雜性,很難求得理論公式=>對測量數(shù)據(jù)建立經(jīng)驗公式,用曲線擬合,不必通過指定點,但應(yīng)反映數(shù)據(jù)的變化趨勢,盡可能逼近。擬合方式線性擬合冪函數(shù)或指數(shù)函數(shù)擬合多項式擬合確定擬合曲線方程最小二乘法§5.2線圖的程序化第60頁/共130頁線性擬合在直角坐標(biāo)系中點大致呈線性分布,

y(x)=a0+a1x§5.2線圖的程序化第61頁/共130頁冪函數(shù)或指數(shù)函數(shù)擬合在對數(shù)坐標(biāo)系中點大致呈線性分布§5.2線圖的程序化第62頁/共130頁多項式擬合Y(x)=Σajxj(j=0,1,2,3,……,m)

§5.2線圖的程序化第63頁/共130頁最小二乘法的基本思想§5.2線圖的程序化第64頁/共130頁最小二乘法的線性擬合§5.2線圖的程序化第65頁/共130頁最小二乘法的線性擬合§5.2線圖的程序化第66頁/共130頁例1:設(shè)有數(shù)表求適合上述關(guān)系的擬合方程。解:由圖可見,各點連線近似一條直線,所以選擇線性擬合。則有

由表得n=4

0

1

2

3

4

xi

20

40

60

80

100

yi

4.357.5510.4013.816.8第67頁/共130頁

代入方程組(1)得解得

∴所求擬合方程為第68頁/共130頁最小二乘法的多項式擬合§5.2線圖的程序化第69頁/共130頁§5.2線圖的程序化為使其最小,取F(a0,a1,...,an)對各自變量的偏導(dǎo)數(shù)等于零第70頁/共130頁§5.2線圖的程序化第71頁/共130頁§5.2線圖的程序化第72頁/共130頁§5.2線圖的程序化第73頁/共130頁用最小二乘法求多項式各個系數(shù)時,應(yīng)注意:(1)開始可用較低冪次數(shù)擬合,如求出的值誤差太大時,再提高冪次數(shù)(一般小于7)擬合;(2)如結(jié)果還是不夠理想.可分段進(jìn)行擬合?!?.2線圖的程序化第74頁/共130頁例2:有一組實驗數(shù)據(jù)如表所示,它有7個點,現(xiàn)要求用二次多項式擬合。解:先將這組數(shù)據(jù)用坐標(biāo)紙畫出來,觀查一下x、y的變化趨勢,可以斷定y是x的二次拋物線函數(shù)。設(shè)擬合公式為

f(x)=a0+a1x+a2x2由上述實驗數(shù)據(jù)及擬合公式知m=2,n=6,求公式(2)各系數(shù)分別為:點號

0123456x值-3-2-10123y值

4320-1-2-5第75頁/共130頁代入公式(2)中得求解得

所以擬合后的公式:

第76頁/共130頁例3:用最小二乘法,求一個形如f(x)=a+bx2的擬合公式,使它與下列數(shù)據(jù)相擬合。01234xi1925313844yi19.032.349.073.397.3第77頁/共130頁第78頁/共130頁第79頁/共130頁已知數(shù)表如下所示:x12345y13102035用最小二乘法求一個與數(shù)表數(shù)據(jù)相擬和的二次函數(shù),并求當(dāng)x=3.55時的函數(shù)值。第80頁/共130頁第81頁/共130頁第82頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第83頁/共130頁1、數(shù)據(jù):是指描述客觀事物的數(shù)、字符及所有能輸入到計算機(jī)中處理的符號的集合。2、數(shù)據(jù)元素:是數(shù)據(jù)的基本單位,是數(shù)據(jù)這個集合中的一個個體。3、數(shù)據(jù)類型:程序設(shè)計語言允許變量的種類,不同的數(shù)據(jù)類型確定了數(shù)據(jù)元素在計算機(jī)中所占的位串的大小?!?.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第84頁/共130頁數(shù)據(jù)結(jié)構(gòu)依據(jù)視點的不同,分為數(shù)據(jù)邏輯結(jié)構(gòu)和物理結(jié)構(gòu):邏輯結(jié)構(gòu):從解決問題的需要出發(fā),為實現(xiàn)必要的功能所建立的數(shù)據(jù)結(jié)構(gòu),它屬于用戶的視圖,是面向?qū)ο蟮?。物理結(jié)構(gòu):指數(shù)據(jù)該如何在計算機(jī)中存放,是數(shù)據(jù)邏輯結(jié)構(gòu)的物理存儲方式,是屬于具體實現(xiàn)的視圖,是面向計算機(jī)的。關(guān)系:物理結(jié)構(gòu)是邏輯數(shù)據(jù)的存儲映象§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第85頁/共130頁(a1,a2,…ai-1,ai,ai+1

,…,an)線性表的邏輯結(jié)構(gòu)

線性表的定義:用數(shù)據(jù)元素的有限序列表示n=0時稱為數(shù)據(jù)元素線性起點ai的直接前趨ai的直接后繼下標(biāo),是元素的序號,表示元素在表中的位置n為元素總個數(shù),即表長。n≥0空表線性終點§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第86頁/共130頁順序表的表示用一組地址連續(xù)的存儲單元依次存儲線性表的元素。把邏輯上相鄰的數(shù)據(jù)元素存儲在物理上相鄰的存儲單元中的存儲結(jié)構(gòu)。線性表的順序表示又稱為順序存儲結(jié)構(gòu)或順序映像。順序存儲定義:順序存儲方法:特點:邏輯上相鄰的元素,物理上也相鄰可以利用數(shù)組V[n]來實現(xiàn)注意:在C語言中數(shù)組的下標(biāo)是從0開始,即:

V[n]的有效范圍是從V[0]~V[n-1]§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第87頁/共130頁鏈?zhǔn)酱鎯Y(jié)構(gòu)特點:在存儲器中的位置是隨意的,即邏輯上相鄰的數(shù)據(jù)元素在物理上不一定相鄰。讓每個存儲結(jié)點都包含兩部分:數(shù)據(jù)域和指針域指針數(shù)據(jù)指針數(shù)據(jù)指針或數(shù)據(jù)域:存儲元素數(shù)值數(shù)據(jù)指針域:存儲直接后繼或者直接前驅(qū)的存儲位置設(shè)計思想:犧牲空間效率換取時間效率鏈表存放示意圖如下:a1heada2/\an……§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第88頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第89頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第90頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第91頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)線性表鏈?zhǔn)酱鎯Y(jié)構(gòu)的特點:無序性非均勻性占用空間較大訪問、修改速度快刪除、插入時運算量小單向搜索適合于:查詢、刪除與插入頻繁的場合第92頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第93頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第94頁/共130頁

a1

a2……

an棧S

ai……低地址高地址壓入(PUSH):彈出(POP):

an+1線性表

S=(a1,a2,….,an-1,an)棧底base棧頂top§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第95頁/共130頁樹及二叉樹由一個或多個(n≥0)結(jié)點組成的有限集合T,有且僅有一個結(jié)點稱為根(root),當(dāng)n>1時,其余的結(jié)點分為m(m≥0)個互不相交的有限集合T1,T2,…,Tm。每個集合本身又是棵樹,被稱作這個根的子樹?!?.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第96頁/共130頁若干術(shù)語——即上層的那個結(jié)點(直接前驅(qū))——即下層結(jié)點的子樹的根(直接后繼)——同一雙親下的同層結(jié)點(孩子之間互稱兄弟)——即雙親位于同一層的結(jié)點(但并非同一雙親)——即從根到該結(jié)點所經(jīng)分支的所有結(jié)點——即該結(jié)點下層子樹中的任一結(jié)點ABCGEIDHFJFLK根葉子森林有序樹無序樹——即根結(jié)點(沒有前驅(qū))——即終端結(jié)點(沒有后繼)——指m棵不相交的樹的集合(例如刪除A后的子樹個數(shù))雙親孩子兄弟堂兄弟祖先子孫——結(jié)點各子樹從左至右有序,不能互換(左為第一)——結(jié)點各子樹可互換位置?!?.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第97頁/共130頁——即樹的數(shù)據(jù)元素——結(jié)點掛接的子樹數(shù)結(jié)點結(jié)點的度結(jié)點的層次終端結(jié)點分支結(jié)點樹的度樹的深度(或高度)——從根到該結(jié)點的層數(shù)(根結(jié)點算第一層)——即度為0的結(jié)點,即葉子——即度不為0的結(jié)點(也稱為內(nèi)部結(jié)點)——所有結(jié)點度中的最大值(Max{各結(jié)點的度})——指所有結(jié)點中最大的層數(shù)(Max{各結(jié)點的層次})問:右上圖中的結(jié)點數(shù)=;樹的度=;樹的深度=1334(有幾個直接后繼就是幾度,亦稱“次數(shù)”)ABCGEIDHFJFLK§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第98頁/共130頁樹的存儲結(jié)構(gòu)二叉樹的遍歷二叉樹的存儲結(jié)構(gòu)二叉樹的邏輯結(jié)構(gòu)§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第99頁/共130頁樹的存儲結(jié)構(gòu):鏈?zhǔn)酱鎯Α?.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)定長方式第100頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)不定長方式第101頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)例:某傳動箱第102頁/共130頁§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第103頁/共130頁ABDCFEGABCFG二叉樹:每個結(jié)點至多有兩棵子樹滿二叉樹:深度為k,有個結(jié)點完全二叉樹:結(jié)點的度數(shù)為0或2§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第104頁/共130頁二叉樹的存儲:滿二叉樹:順序存儲一般二叉樹:鏈?zhǔn)酱鎯Χ鏄涞谋闅v:按一定規(guī)律,對樹中的所有結(jié)點做一次且僅一次訪問,完成一定的操作,對樹的遍歷相當(dāng)于對接點進(jìn)行一次掃描。DCRLDRLRDDRLRDLRLD二叉樹遍歷方式:§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第105頁/共130頁ABDCFEGIHABDHECFGI§5.3機(jī)械CAD中常用的數(shù)據(jù)結(jié)構(gòu)第106頁/共130頁1、數(shù)據(jù)項:字段(數(shù)據(jù)元素)是描述事物的一個屬性的最小單位2、記錄:數(shù)據(jù)項的有序集合,用以描述一個事物的一組屬性特征4、文件:表的集合3、表:記錄的集合5、關(guān)鍵字:指可以用來標(biāo)識一個記錄的數(shù)據(jù)項的值,能夠唯一標(biāo)識一個記錄的關(guān)鍵字稱為主關(guān)鍵字,不能唯一標(biāo)識一個記錄的關(guān)鍵字稱為次關(guān)鍵字或輔關(guān)鍵字?!?.4數(shù)據(jù)的存儲與管理第107頁/共130頁§5.4數(shù)據(jù)的存儲與管理第108頁/共130頁§5.4數(shù)據(jù)的存儲與管理第109頁/共130頁§5.4數(shù)據(jù)的存儲與管理第110頁/共130頁§5.4數(shù)據(jù)的存儲與管理第111頁/共130頁§5.4數(shù)據(jù)的存儲與管理第112頁/共130頁常用的文件組織方法(1)順序文件:物理順序與邏輯順序一致的文件。它的有效存儲區(qū)域是連續(xù)的,結(jié)構(gòu)緊湊、簡單,但增刪、檢索不夠方便?!?.4數(shù)據(jù)的存儲與管理檢索方法:順序掃描、折半查找、分塊查找第113頁/共130頁(2)索引文件:帶有一個包括關(guān)鍵字和存放地址索引表的文件。當(dāng)查找記錄時,先按該記錄的鍵值到索引表中查得相應(yīng)地址,系統(tǒng)再按該地址查到記錄,查找效率高,使用比較廣泛?!?.4數(shù)據(jù)的存儲與管理第114頁/共130頁§5.4數(shù)據(jù)的存儲與管理第115頁/共130頁§5.4數(shù)據(jù)的存儲與管理第116頁/共130頁§5.4數(shù)據(jù)的存儲與管理第117頁/共130頁數(shù)表程序化處理簡單、方便、快捷,僅適用于數(shù)據(jù)不變化且數(shù)據(jù)量不太多的情況當(dāng)數(shù)據(jù)量很大時,會使程序冗長,調(diào)試?yán)щy,且占用內(nèi)存過多數(shù)據(jù)文件把數(shù)據(jù)以文件的形式存儲于外存儲器(磁盤)上當(dāng)程序需要有關(guān)數(shù)據(jù)時,打開數(shù)據(jù)文件,讀取數(shù)據(jù)數(shù)據(jù)變化時,只需更改文件,程序不變數(shù)據(jù)文件可作為程序的結(jié)果輸出更長時間數(shù)據(jù)文件分為:順序文件和隨機(jī)文件。順序文件其數(shù)據(jù)順序讀寫,檢索和修改不方便;隨機(jī)文件數(shù)據(jù)隨機(jī)讀寫,檢索和修改方便§5.4數(shù)據(jù)的存儲與管理第118頁/共130頁數(shù)表文件化:§5.4數(shù)據(jù)的存儲與管理第119頁/共130頁平鍵和鍵槽尺寸數(shù)據(jù)文件建立C語言程序如下:

#include<stdio.h>#defin

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論