第四章機械技術(shù)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)_第1頁
第四章機械技術(shù)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)_第2頁
第四章機械技術(shù)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)_第3頁
第四章機械技術(shù)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)_第4頁
第四章機械技術(shù)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩135頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章機械技術(shù)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)第1頁,共140頁,2023年,2月20日,星期二計算機不僅要處理數(shù)值計算問題,還要大量地處理包括圖形、圖像、文字、表格等各種復雜的信息,這些信息并不是沒有組織的,信息(數(shù)據(jù))之間往往具有重要的結(jié)構(gòu)關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。計算機要管理的已不只是簡單的、孤立的數(shù)據(jù),而是存在某些關(guān)系的數(shù)據(jù)。13355224411223344551X1Y1X2Y2X3Y3X4Y4X5Y5123451234512345第2頁,共140頁,2023年,2月20日,星期二

一個孤立的具體數(shù)據(jù)往往沒有任何意義。各相關(guān)數(shù)據(jù)的集合→描述任何復雜事物。數(shù)據(jù)之間的關(guān)系為數(shù)據(jù)賦予了豐富的含義。數(shù)據(jù)結(jié)構(gòu)---------是數(shù)據(jù)之間的關(guān)系車床床身及導軌主軸箱尾座走刀箱溜板箱刀架離合器主軸組件中間變速機構(gòu)主軸主軸齒輪主軸軸承3第3頁,共140頁,2023年,2月20日,星期二第四章機械CAD中常用的數(shù)據(jù)結(jié)構(gòu)掌握CAD軟件開發(fā)所需數(shù)據(jù)結(jié)構(gòu)的基本理論;線性表棧樹二叉樹第4頁,共140頁,2023年,2月20日,星期二數(shù)據(jù)

—是對客觀事物的符號表示,是指能輸入到計算機內(nèi)中并被計算機接受和處理的符號的總稱。用文字符號、數(shù)字符號及其它規(guī)定的符號(如圖形、圖像)對現(xiàn)實世界的事物及其活動的抽象描述。4.1基本概念第5頁,共140頁,2023年,2月20日,星期二

數(shù)據(jù)元素

—數(shù)據(jù)元素是數(shù)據(jù)的基本單位,是數(shù)據(jù)這個集合中相對獨立的個體。在程序中通常作為一個整體來進行考慮和處理。在設(shè)計產(chǎn)品的過程中,可以把該產(chǎn)品的每個部件的每一個零件看作一個相對獨立的單元,這時每個零件就是一個數(shù)據(jù)元素;圓柱體、長方體可以作為零件形體的數(shù)據(jù)元素;直線、圓弧可以作為圖形的數(shù)據(jù)元素。

一個數(shù)據(jù)元素可由若干個數(shù)據(jù)項和組合項組成。數(shù)據(jù)項是數(shù)據(jù)的不可分割的最小單位,數(shù)據(jù)項是對客觀事物某一方面特性的數(shù)據(jù)描述。第6頁,共140頁,2023年,2月20日,星期二數(shù)據(jù)項

是數(shù)據(jù)中最基本的、不可分的并有命名的數(shù)據(jù)單位,是對客觀事物某一方面特性的數(shù)據(jù)描述。2)組合項由若干個數(shù)據(jù)項組成。第7頁,共140頁,2023年,2月20日,星期二數(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頁,共140頁,2023年,2月20日,星期二

數(shù)據(jù)結(jié)構(gòu)(DataStructure):是指相互之間具有(存在)一定聯(lián)系(關(guān)系)的數(shù)據(jù)元素的集合。車床床身及導軌主軸箱尾座走刀箱溜板箱刀架離合器主軸組件中間變速機構(gòu)主軸主軸齒輪主軸軸承第9頁,共140頁,2023年,2月20日,星期二數(shù)據(jù)結(jié)構(gòu)的三個組成部分:邏輯結(jié)構(gòu):描述數(shù)據(jù)元素之間的邏輯關(guān)系。

D_S=(D,S)存儲結(jié)構(gòu):

數(shù)據(jù)元素在計算機中的存儲及其邏輯關(guān)系的表現(xiàn)稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理結(jié)構(gòu)。數(shù)據(jù)操作:

對數(shù)據(jù)要進行的運算(查找、插入、刪除)。

第10頁,共140頁,2023年,2月20日,星期二數(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)系、它從客觀的角度組織和表達數(shù)據(jù)。第11頁,共140頁,2023年,2月20日,星期二圖4-2四類基本結(jié)構(gòu)圖第12頁,共140頁,2023年,2月20日,星期二線性結(jié)構(gòu)—結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一對一的關(guān)系。每一個數(shù)據(jù)元素僅與它前面的一個和后面的一個數(shù)據(jù)元素相聯(lián)系。特點:數(shù)據(jù)間的關(guān)系很簡單,只是順序排列的位置關(guān)系,而且這種位置關(guān)系是線性的。這種結(jié)構(gòu)的數(shù)據(jù)可以用數(shù)表的形式表示。又稱這類數(shù)據(jù)結(jié)構(gòu)為“線性表結(jié)構(gòu)”第13頁,共140頁,2023年,2月20日,星期二姓名電話號碼陳四。。。。。例4-1:電話號碼查詢系統(tǒng)設(shè)有一個電話號碼薄,它記錄了N個人的名字和其相應的電話號碼,假定按如下形式安排:(a1,b1),(a2,b2),…(an,bn),其中ai,bi(i=1,2…n)

分別表示某人的名字和電話號碼。本問題是一種典型的表格問題。數(shù)據(jù)與數(shù)據(jù)成簡單的一對一的線性關(guān)系。第14頁,共140頁,2023年,2月20日,星期二例如:線性表的邏輯結(jié)構(gòu)第15頁,共140頁,2023年,2月20日,星期二樹狀結(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頁,共140頁,2023年,2月20日,星期二例如:線性表的邏輯結(jié)構(gòu)第17頁,共140頁,2023年,2月20日,星期二例4-2:磁盤目錄文件系統(tǒng)

磁盤根目錄下有很多子目錄及文件,每個子目錄里又可以包含多個子目錄及文件,但每個子目錄只有一個父目錄,依此類推:本問題是一種典型的樹型結(jié)構(gòu)問題,如圖1-1

,數(shù)據(jù)與數(shù)據(jù)成一對多的關(guān)系,是一種典型的非線性關(guān)系結(jié)構(gòu)—樹形結(jié)構(gòu)。第18頁,共140頁,2023年,2月20日,星期二網(wǎng)狀結(jié)構(gòu)—結(jié)構(gòu)中的數(shù)據(jù)元素之間存在多對多的關(guān)系。數(shù)據(jù)元素之間的關(guān)系是一種多元關(guān)系,即多對多、多對一。9412631078310584538912345678

910工藝路線方案圖第19頁,共140頁,2023年,2月20日,星期二例4-3:交通網(wǎng)絡圖

從一個地方到另外一個地方可以有多條路徑。本問題是一種典型的網(wǎng)狀結(jié)構(gòu)問題,數(shù)據(jù)與數(shù)據(jù)成多對多的關(guān)系,是一種非線性關(guān)系結(jié)構(gòu)。佛山惠州廣州中山東莞深圳珠海圖1-2

網(wǎng)狀結(jié)構(gòu)第20頁,共140頁,2023年,2月20日,星期二

數(shù)據(jù)的存儲(物理)結(jié)構(gòu)定義:

是指數(shù)據(jù)在計算機內(nèi)部的存儲方式,它從物理存儲的角度來描述數(shù)據(jù)以及數(shù)據(jù)間的關(guān)系。常用種類:

順序存儲結(jié)構(gòu)、鏈接存儲結(jié)構(gòu)。(1)順序存儲結(jié)構(gòu)

定義:

利用一組地址連續(xù)的存儲單元依次存放各數(shù)據(jù)元素。

第21頁,共140頁,2023年,2月20日,星期二第22頁,共140頁,2023年,2月20日,星期二特點:1)存儲單元少,簡單易行,結(jié)構(gòu)緊湊。

2)數(shù)據(jù)結(jié)構(gòu)缺乏柔性,若要增刪數(shù)據(jù),必須重新分配存儲單元。應用:查詢頻繁,修改、補充、刪除數(shù)據(jù)量小的場合。第23頁,共140頁,2023年,2月20日,星期二

用一組任意的存儲單元存儲數(shù)據(jù)元素(這組存儲單元可以是連續(xù)的,也可以是不連續(xù)的)。信息字段結(jié)構(gòu)形式:

一個數(shù)據(jù)元素項(結(jié)點)由兩個字段組成

信息字段(INFO)和指針字段(POINT)指針字段信息字段

存放數(shù)據(jù)元素本身的域指針字段

存放直接后繼或直接前驅(qū)的域稱為指針域(point)。指針域中存儲的信息稱作指針。(2)鏈接式存儲結(jié)構(gòu)第24頁,共140頁,2023年,2月20日,星期二

鏈式存儲結(jié)構(gòu)1536元素21536元素21346元素31346元素3∧元素4∧元素4存儲地址

存儲內(nèi)容

指針1345

元素1

14001346

元素4∧…….……..…….

1400

元素21536…….……..…….1536

元素313461400元素1h1400元素1h第25頁,共140頁,2023年,2月20日,星期二structlink{charname;structlink*next};第26頁,共140頁,2023年,2月20日,星期二存儲結(jié)構(gòu)可獨立于邏輯結(jié)構(gòu)。存儲的物理順序不必與邏輯順序一致而仍能按邏輯要求存取數(shù)據(jù)。特點:鏈接存儲結(jié)構(gòu)在不改變原來存儲結(jié)構(gòu)的條件下,增刪記錄十分方便,只要控制指針即可。根據(jù)指針的數(shù)目,鏈接存儲結(jié)構(gòu)有三種類型:單向鏈結(jié)構(gòu)

雙向鏈結(jié)構(gòu)多向鏈結(jié)構(gòu)第27頁,共140頁,2023年,2月20日,星期二在不改變原來存儲結(jié)構(gòu)的條件下,只要控制指針即可R1R2R3R4R5R6鏈接存儲結(jié)構(gòu)的記錄增刪R1R2R3R4R5鏈接存儲結(jié)構(gòu)的記錄增、刪

第28頁,共140頁,2023年,2月20日,星期二

數(shù)據(jù)的邏輯結(jié)構(gòu)

數(shù)據(jù)的存儲結(jié)構(gòu)數(shù)據(jù)的運算:檢索、排序、插入、刪除、修改等

線性結(jié)構(gòu)

非線性結(jié)構(gòu)

順序存儲

鏈式存儲線性表棧隊列樹形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個方面第29頁,共140頁,2023年,2月20日,星期二數(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)鏈式存儲結(jié)構(gòu)復合存儲結(jié)構(gòu)邏輯結(jié)構(gòu)物理結(jié)構(gòu)第30頁,共140頁,2023年,2月20日,星期二數(shù)據(jù)類型:在一種程序設(shè)計語言中,變量所具有的數(shù)據(jù)種類。例1、在C語言中,數(shù)據(jù)類型:基本類型和構(gòu)造類型基本類型:整型、浮點型、字符型構(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頁,共140頁,2023年,2月20日,星期二

線性結(jié)構(gòu)是最常用、最簡單的一種數(shù)據(jù)結(jié)構(gòu)。而線性表是一種典型的線性結(jié)構(gòu)。其基本特點是線性表中的數(shù)據(jù)元素是有序且是有限的。在這種結(jié)構(gòu)中:①存在一個唯一的被稱為“第一個”的數(shù)據(jù)元素;②存在一個唯一的被稱為“最后一個”的數(shù)據(jù)元素;③除第一個元素外,每個元素均有唯一一個直接前驅(qū);④除最后一個元素外,每個元素均有唯一一個直接后繼。4.2.線性表第32頁,共140頁,2023年,2月20日,星期二

線性表(LinearList):是由n(n≧0)個數(shù)據(jù)元素(結(jié)點)a1,a2,…an組成的有限序列。該序列中的所有結(jié)點具有相同的數(shù)據(jù)類型。其中數(shù)據(jù)元素的個數(shù)n稱為線性表的長度。當n=0時,稱為空表。當n>0時,將非空的線性表記作:(a1,a2,…an)a1稱為線性表的第一個(首)結(jié)點,an稱為線性表的最后一個(尾)結(jié)點。線性表的定義4.2.線性表第33頁,共140頁,2023年,2月20日,星期二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頁,共140頁,2023年,2月20日,星期二線性表邏輯結(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)只是一個抽象的符號,其具體含義隨具體應用的不同而不同。數(shù)據(jù)元素ai可以是一個數(shù),可以是一個符號,還可以是一個線性表,甚至是更復雜的數(shù)據(jù)結(jié)構(gòu)。4.2.1線性表的邏輯結(jié)構(gòu)第35頁,共140頁,2023年,2月20日,星期二線性表中的結(jié)點可以是單值元素(每個元素只有一個數(shù)據(jù)項)。例:26個英文字母組成的字母表:(A,B,C、…、Z)光軸軸徑系列值表示成線性表形式:(3,6,10,14,18,20,22,…,90)第36頁,共140頁,2023年,2月20日,星期二

線性表中的結(jié)點可以是記錄型元素,每個元素含有多個數(shù)據(jù)項,每個數(shù)據(jù)項稱為結(jié)點的一個域。每個元素有一個可以唯一標識每個結(jié)點的數(shù)據(jù)項組,稱為關(guān)鍵字。例4:某校2001級同學的基本情況:{(‘2001414101’,‘張強’,‘男’,06/24/1983),

(‘2001414102’,‘張化司’,‘男’,08/12/1984)…,

(‘2001414102’,‘李利辣’,‘女’,08/12/1984)}第37頁,共140頁,2023年,2月20日,星期二

減速器明細表也屬線性表,該表中的數(shù)據(jù)元素是由4個數(shù)據(jù)項組成的一個記錄。第38頁,共140頁,2023年,2月20日,星期二若線性表中的結(jié)點是按值(或按關(guān)鍵字值)由小到大(或由大到小)排列的,稱線性表是有序的。第39頁,共140頁,2023年,2月20日,星期二

線性表是一種相當靈活的數(shù)據(jù)結(jié)構(gòu),其長度可根據(jù)需要增長或縮短。對線性表的數(shù)據(jù)元素可以訪問、插入和刪除。

線性表的物理結(jié)構(gòu)(存儲結(jié)構(gòu))

既可以采用順序存儲,也可以采用鏈接存儲結(jié)構(gòu)。第40頁,共140頁,2023年,2月20日,星期二4.2.2、線性表的順序存儲結(jié)構(gòu)1、順序存儲:把線性表的結(jié)點按邏輯順序依次存放在一組地址連續(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頁,共140頁,2023年,2月20日,星期二線性表的第i個數(shù)據(jù)元素ai的存儲位置為:a1a2aianLoc(a1)i-1個元素Loc(ai)=(i-1)*m+Loc(a1)

有序性:各數(shù)據(jù)元素之間的存儲順序與邏輯順序一致。均勻性:每個數(shù)據(jù)元素所占存儲空間的長度是相等的。線性表的順序存儲結(jié)構(gòu)的特點第42頁,共140頁,2023年,2月20日,星期二2順序表的基本操作

順序存儲結(jié)構(gòu)中,常用的線性表的操作:

建表、查找、修改、插入、刪除、求長度等。以下將對幾種主要的操作進行討論。1)建表staticcharlistc[6]={‘A’,’B’,’C’,’D’,’E’};2)訪問charc;C=listc[2];3)修改listc[2]=‘T’;第43頁,共140頁,2023年,2月20日,星期二在線性表L=(a1,…ai-1,ai,ai+1,…,an)中的第i(1≦i≦n)個位置上插入一個新結(jié)點e,使其成為線性表:

L=(a1,…ai-1,e,ai,ai+1,…,an)

4)順序線性表的插入為保證線性表的均勻性,新的數(shù)據(jù)元素必須和表內(nèi)已有元素的類型一致;為了保證線性表的有序性,原線性表第i至最后一個元素要向后移動一個數(shù)據(jù)元素所占存儲空間的長度。第44頁,共140頁,2023年,2月20日,星期二5)順序線性表的插入ABCXDE實現(xiàn)步驟(1)將線性表L中的第i個至第n個結(jié)點后移一個位置。(2)將結(jié)點e插入到結(jié)點ai-1之后。(3)線性表長度加1。[例4-5]

插入一個數(shù)據(jù)元素ABCDE插入后第45頁,共140頁,2023年,2月20日,星期二#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頁,共140頁,2023年,2月20日,星期二3)順序線性表的刪除第47頁,共140頁,2023年,2月20日,星期二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個元素(下標為i-1)開始

Listc[j]=‘\0’;}第48頁,共140頁,2023年,2月20日,星期二第49頁,共140頁,2023年,2月20日,星期二第50頁,共140頁,2023年,2月20日,星期二4.2.3線性表的鏈式存儲結(jié)構(gòu)為了能正確表示數(shù)據(jù)元素間的邏輯關(guān)系,在存儲每個數(shù)據(jù)元素的域同時,還必須存儲指示其后繼數(shù)據(jù)元素的地址(或位置)信息。在鏈表結(jié)構(gòu)中,一個數(shù)據(jù)元素由數(shù)據(jù)域和指針域組成,稱為一個結(jié)點。datanext數(shù)據(jù)域(data)指針域(next)第51頁,共140頁,2023年,2月20日,星期二4.2.3線性表的鏈式存儲結(jié)構(gòu)數(shù)據(jù)元素用指針來保存其直接前趨或直接后繼的地址,形成環(huán)環(huán)相扣的鏈條,并通過指針來逐個檢索數(shù)據(jù)元素?!?..a1a2a3aiai+1annil......a1a2aiai+1an(a1,a2,…ai,ai+1,…an)第52頁,共140頁,2023年,2月20日,星期二鏈接存儲結(jié)構(gòu)的記錄增、刪

在不改變原來存儲結(jié)構(gòu)的條件下,只要控制指針即可R1R2R3R4R5R6鏈接存儲結(jié)構(gòu)的記錄增刪R1R2R3R4R5第53頁,共140頁,2023年,2月20日,星期二根據(jù)指針的數(shù)目,鏈接存儲結(jié)構(gòu)有三種類型:單向鏈結(jié)構(gòu)

雙向鏈結(jié)構(gòu)多向鏈結(jié)構(gòu)第54頁,共140頁,2023年,2月20日,星期二2.單向鏈表單向鏈表的結(jié)點指針域中的指針存放該節(jié)點直接后繼的存放地址。第一個結(jié)點的地址存放在鏈表頭指針head中;鏈表的最后一個結(jié)點的指針城設(shè)為NULL。OFC如線性表為:L=(A,B,C,D,E,F(xiàn))A302BB06E663F∧DEFFC238OFCHEAD302B06238EFF663各個數(shù)據(jù)元素由一個指針域和一個數(shù)據(jù)域組成,通過指針構(gòu)成一個鏈狀結(jié)構(gòu),且鏈接方向單一。第55頁,共140頁,2023年,2月20日,星期二頭結(jié)點:數(shù)據(jù)域不存放任何元素,其指針域存放第一個元素的存儲地址。頭指針:第一個數(shù)據(jù)元素的存儲地址;a1h頭結(jié)點

特點:

存儲空間不一定連續(xù);

元素之間的后繼關(guān)系是由指針來體現(xiàn)的;

邏輯上相鄰,物理上不一定相鄰;

第56頁,共140頁,2023年,2月20日,星期二正向鏈:連接方向與邏輯順序相同反向鏈:連接方向與邏輯順序相反R1R2R3R4R5R1R2R3R4R5第57頁,共140頁,2023年,2月20日,星期二單向環(huán)鏈:最后一個數(shù)據(jù)元素與第一個數(shù)據(jù)元素通過指針鏈接.特點:①可以從任意一個元素進入,按指針逐個存取各條記錄;②某個指針損壞不影響整個結(jié)構(gòu)。單向環(huán)鏈R1R2R3R4R5第58頁,共140頁,2023年,2月20日,星期二結(jié)點的描述

C語言中用帶指針的結(jié)構(gòu)體類型來描述typedefstructLnode{intdata;/*數(shù)據(jù)域,保存結(jié)點的值*/structLnode*next;/*指針域*/}LNode;/*結(jié)點的類型*/2)結(jié)點的實現(xiàn)

結(jié)點是通過動態(tài)分配和釋放來的實現(xiàn),即需要時分配,不需要時釋放。分別使用C語言提供的標準函數(shù):malloc(),realloc(),sizeof(),free()。第59頁,共140頁,2023年,2月20日,星期二動態(tài)分配

p=(LNode*)malloc(sizeof(LNode));函數(shù)malloc分配了一個類型為LNode的結(jié)點變量的空間,并將其首地址放入指針變量p中。動態(tài)釋放

free(p);系統(tǒng)回收由指針變量p所指向的內(nèi)存區(qū)。P必須是最近一次調(diào)用malloc函數(shù)時的返回值。第60頁,共140頁,2023年,2月20日,星期二3)最常用的基本操作及其示意圖⑴結(jié)點的賦值

LNode*p;p=(LNode*)malloc(sizeof(LNode));p->data=20;p->next=NULL;p20NULL第61頁,共140頁,2023年,2月20日,星期二⑵常見的指針操作①q=p;操作前pa……q操作后②q=p->next;bpa……操作前操作后qbpa……③p=p->next;bpa……操作前操作后pba……bpa……第62頁,共140頁,2023年,2月20日,星期二操作前ypx……bqa…操作后ypx……bqa…④q->next=p;⑤q->next=p->next;操作前ypx……bqa…操作后ypx……bqa…第63頁,共140頁,2023年,2月20日,星期二

在鏈表建立過程中,首先要建立第一個結(jié)點,然后不斷地在其尾部增加新結(jié)點,直到不需再有新結(jié)點,即尾指針指向NULL為止。定義結(jié)點數(shù)據(jù)結(jié)構(gòu),有兩個成員DATA和NEXT:

在數(shù)據(jù)域(data)中定義數(shù)據(jù)的類型,數(shù)據(jù)域中的數(shù)據(jù)可能只有一個也可能有多個,它們的類型可以一樣也可以不一樣,存放結(jié)點數(shù)據(jù)元素本身;在指針域(next)中定義指向數(shù)據(jù)結(jié)構(gòu)本身的指針,存放該結(jié)點直接后繼的地址。

4)建立單向鏈表第64頁,共140頁,2023年,2月20日,星期二定義結(jié)構(gòu)指針變量:

structnode*p,*p1,*head;

head:用來標志鏈表頭;

p:在鏈表建立過程中,p總是不斷先接受系統(tǒng)動態(tài)分配的新結(jié)點地址。

p1—>next:存儲新結(jié)點的地址。然后通過動態(tài)分配內(nèi)存給每個結(jié)點賦值。申請動態(tài)分配一個存儲空間的表示形式為:

(structnode*)malloc(sizeof(structnode))

4)建立單向鏈表第65頁,共140頁,2023年,2月20日,星期二鏈表建立的步驟:第-步:建立第一個結(jié)點structnode/*定義結(jié)點數(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é)點地址*/dataheadp,p1第66頁,共140頁,2023年,2月20日,星期二第二步:給第一個結(jié)點成員data賦值并產(chǎn)生第二個結(jié)點scanf(“%d”,&p—>data);

/*輸入10*/p=(structnode*)malloc(sizeof(structnode);datanextnext10第一結(jié)點第二結(jié)點headp1p鏈表建立的步驟:第67頁,共140頁,2023年,2月20日,星期二第三步:將第一個結(jié)點與第二個結(jié)點連接起來

p1—>next=p;10nextnextdata第一結(jié)點P1第二結(jié)點Pheadp1p鏈表建立的步驟:第68頁,共140頁,2023年,2月20日,星期二第四步:給第二個結(jié)點成員data賦值并產(chǎn)生第三個結(jié)點p1=p;scanf(“%d”,&p->data);/*輸入8*/p=(structnode*)malloc(sizeof(structnode);鏈表建立的步驟:10nextnext8第一結(jié)點第二結(jié)點p1第三結(jié)點pnext10第一結(jié)點headp18next第二結(jié)點p1datanext第三結(jié)點p第五步:將第二個結(jié)點與第三個結(jié)點連接起來

p1—>next=p;nextdata第69頁,共140頁,2023年,2月20日,星期二

以后步驟都是重復第四、五步,直到給出一個結(jié)束條件,不再建新的結(jié)點時,要有:

p—>next=NULL;它表示尾結(jié)點。第70頁,共140頁,2023年,2月20日,星期二[例4-6]建立鏈表。用C語言建立單向鏈表的程序如下:

#include<stdio.h>#include<alloc.h>#defineLENsizeof(structnode)structnode/*定義結(jié)點數(shù)據(jù)結(jié)構(gòu)*/{intdata;

structnode*next;

};

main(){structnode*p,*pl,*head;

head=p=(structnode*)malloc(LEN);/*申請動態(tài)分配一個存儲地址,為第一個結(jié)點地址*/scanf(“%d”,&p->data);/*輸入第一個結(jié)點的數(shù)據(jù)成員*/第71頁,共140頁,2023年,2月20日,星期二while(p->data!=0)/*結(jié)束條件:當輸入0時,退出循環(huán)*/{p1=p;

p=(structnode*)malloc(LEN);/*申請動態(tài)分配一個存儲地址,為下一個結(jié)點地址*/scanf(”%d”,&p->data);

/*輸入中間結(jié)點數(shù)據(jù)成員*/p1->next=p;

/*中間結(jié)點的指針成員值,將前后兩個結(jié)點連接起來*/

}p->next=NULL;/*尾結(jié)點的指針成員值*/

……}第72頁,共140頁,2023年,2月20日,星期二

為了證實已建鏈表是所需要的,應在上程序的省略處加入下列程序段:

p=head;/*頭指針*/printf(”鏈表數(shù)據(jù)成員是:”);/*鏈表顯示*/

while(p->next!=NULL){printf(”%d”,p->data);/*顯示中間結(jié)點數(shù)據(jù)成員*/

p=p->next;

}printf(”%d\n”,p->data);【結(jié)果】

1086420/*建鏈表時輸入的數(shù)據(jù)*/鏈表數(shù)據(jù)成員是:1086420/*顯示所建的鏈表*/第73頁,共140頁,2023年,2月20日,星期二打?。簺]找到訪問P開始輸入iP=head,j=0i=j+1P=P-﹥nextP為空嗎?i=j?返回返回YYNN5)單向鏈表的訪問訪問單向鏈表的第i個結(jié)點,應從表頭開始檢索.根據(jù)指針域的值逐個查直到找到第i個結(jié)點。第74頁,共140頁,2023年,2月20日,星期二5)單向鏈表的訪問[例4-7]對[例4-1]所建鏈表的第i個結(jié)點的訪問程序如下(注意:在調(diào)用之前,應將p指向表頭):

visit(inti){Intj=1;intdata;Sructnode*p;p=head;while(p)/*當結(jié)點指針非空時*/{if(j++==i)/*如果是第i個結(jié)點*/{data=p—>data;return;}/*將第i個結(jié)點數(shù)據(jù)保存在data中,返回*/第75頁,共140頁,2023年,2月20日,星期二p=p->next;/*結(jié)點指針指向下一結(jié)點*/}Pritnf(“\n序號超出范圍”);return(0);}第76頁,共140頁,2023年,2月20日,星期二

在鏈表中查找是否有指定的數(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)/*當結(jié)點指針非空時*/{if(p—>data==data;return(j);)/*如果是第j個結(jié)點*/j++;6)單向鏈表查找第77頁,共140頁,2023年,2月20日,星期二p=p->next;/*結(jié)點指針指向下一結(jié)點*/}Pritnf(“\n沒找到該數(shù)據(jù)”);return(0);}第78頁,共140頁,2023年,2月20日,星期二

在單鏈表中刪除第i個結(jié)點的基本操作為:找到線性表中第i-1個結(jié)點,修改其指向后繼的指針。ai-1ai+1ai-1q=p->next;(引入一個結(jié)點q)p->next=q->next;

e=q->data;delete(q);pq7)單向鏈表刪除第79頁,共140頁,2023年,2月20日,星期二[例4-8]刪除第i個結(jié)點。Voiddelete(inti){intj=1;sructnode*p,*q;p=q=head;if(i==1){head=q->next;free(q);return;}/*將頭結(jié)點指向第一個結(jié)點的后繼點*/while(p)/*當結(jié)點指針非空時*/{if(++j==i-1)/*如果p是第i-1個結(jié)點*/{(q=p—>next;/*q指向第i個結(jié)點*/if(q==NULL){Pritnf(“\n序號超出范圍”);return;}p->next=q->next;/*將第i-1個結(jié)點指針指向第i+1個結(jié)點*/;

delete(q);

return;}第80頁,共140頁,2023年,2月20日,星期二p=p->next;/*

如果p不是第i-1個結(jié)點,結(jié)點指針指向下一結(jié)點*/}Pritnf(“\n序號超出范圍”);return(0);}第81頁,共140頁,2023年,2月20日,星期二

插入運算是將值為x的新結(jié)點插入到表的第i個結(jié)點的位置上,即插入到ai-1與ai之間。xai-1ai8)單向鏈表插入

在單鏈表中的實現(xiàn):有序?qū)?/p>

<……ai-1,ai…>

改變?yōu)?/p>

<…ai-1,x,ai…>第82頁,共140頁,2023年,2月20日,星期二

插入運算是將值為x的新結(jié)點插入到表的第i個結(jié)點的位置上,即插入到ai-1與ai之間。首先找到ai-1所在的結(jié)點node,然后生成一個數(shù)據(jù)域為x的新結(jié)點newnode,newnode結(jié)點作為node的直接后繼結(jié)點,newnode結(jié)點的指針指向ai所在的結(jié)點。第83頁,共140頁,2023年,2月20日,星期二(1)查找到第i-1個節(jié)點,將第

i

個結(jié)點的地址node->next取出,存放在指針變量temp中,

即temp=node->next;(2)為新節(jié)點申請一個存儲空間,

newnode

=(structnode*)malloc(LEN);(指針變量newnode指向該地址);

鏈表結(jié)點的插入過程:xnwenodeaitemp第84頁,共140頁,2023年,2月20日,星期二(3)將第i-1個節(jié)點的指針指向新節(jié)點的地址,

即將新結(jié)點的地址賦給第i-1個節(jié)點指針

node->next中,即node->next=newnode

(4)將新節(jié)點的指針指向第i個節(jié)點的地址,即將原鏈表中第

i個節(jié)點的地址值賦給新結(jié)點指針newnode->next中,即newnode->next=tempxai-1xai-1ai第85頁,共140頁,2023年,2月20日,星期二[例4-9]在下面所建鏈表的第i個節(jié)點之前插入一個新結(jié)點的程序如下:第86頁,共140頁,2023年,2月20日,星期二Insert(structlink*node,inti,newdata)/*注意:在調(diào)用之前,應將node指向表頭*/{intj=0;structlink*newnode,*temp;

node=head;

/*給新結(jié)點動態(tài)分配內(nèi)存*/newnode=(structlink*)malloc(sizeof(structlink));newnode->data=‘X’;/*給新結(jié)點的數(shù)據(jù)域賦新值*/Wile(node)/*當結(jié)點指針非空時*/{ifj++==i-1/*如果node是第i-1個結(jié)點*/第87頁,共140頁,2023年,2月20日,星期二{/*將第i個結(jié)點地址存放在temp中*/temp=node->next;

/*將第i-1結(jié)點指針指向新節(jié)點的地址*/node->next=newnode;

/*新結(jié)點的指針指向第i個節(jié)點的地址*/newnode->next=temp;

return;}node=node->next;/*結(jié)點指針指向下一結(jié)點*/}}第88頁,共140頁,2023年,2月20日,星期二注意

(1)本節(jié)僅描述在某結(jié)點后插入,若想在某結(jié)點之前插入,怎么做??。

(2)在插入操作中,多增加了兩個結(jié)構(gòu)指針變量newnode,temp第89頁,共140頁,2023年,2月20日,星期二順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)的特點順序結(jié)構(gòu)存儲時,相鄰數(shù)據(jù)元素的存放地址也相鄰,即邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)是統(tǒng)一的,要求內(nèi)存中存儲單元的地址必須是連續(xù)的。優(yōu)點:一般情況下,存儲密度大,存儲空間利用率高。缺點:(1)在做插入和刪除操作時,需移動大量元素;(2)由于難以估計,必須預先分配較大的空間,往往使存儲空間不能得到充分利用;(3)表的容量難以擴充。第90頁,共140頁,2023年,2月20日,星期二鏈式結(jié)構(gòu)存儲時,相鄰數(shù)據(jù)元素可隨意存放,所占空間分為兩部分,一部分存放結(jié)點值,另一部分存放表示結(jié)點間關(guān)系的指針。優(yōu)點:插入和刪除元素時很方便,使用靈活。缺點:存儲密度小,存儲空間利用率低。第91頁,共140頁,2023年,2月20日,星期二

進棧

出棧

棧頂

an

a3

a2

棧底

a1

圖4-13-

棧的邏輯結(jié)構(gòu)4.3.棧棧是一種特殊的線性表,它的插入與刪除操作只能在表的一端進行。定義:棧頂:

棧底:棧的操作:

允許插入和刪除操作的一端稱為棧頂。

不允許插入和刪除操作的一端稱為棧底。

是按照后進先出的原則進行的。

4.3.1棧的基本概念第92頁,共140頁,2023年,2月20日,星期二

進棧

出棧

棧頂

an

a3

a2

棧底

a1

圖4-13-

棧的邏輯結(jié)構(gòu)

棧的邏輯結(jié)構(gòu):s=(a1,a2,a3,,…,,ai,…,an),則a1稱為棧底元素,an為棧頂元素。進棧的順序:a1,a2,a3,,…,an

;出棧的順序是:an,an-1,…,a3,a2,a1。特點:后進先出(LIFO---LastInFirstOut)。第93頁,共140頁,2023年,2月20日,星期二第94頁,共140頁,2023年,2月20日,星期二第95頁,共140頁,2023年,2月20日,星期二第96頁,共140頁,2023年,2月20日,星期二第97頁,共140頁,2023年,2月20日,星期二工程手冊的數(shù)據(jù)處理

設(shè)計資料的處理方法有以下兩種:

(1)程序化。即在應用程序內(nèi)部對這些數(shù)表及線圖進行查表、處理或計算。具體處理方法有兩種,第一種數(shù)組化:將數(shù)表中的數(shù)據(jù)或線圖經(jīng)離散化后存入一維、二維或三維數(shù)組,用查表、插值等方法檢索所需數(shù)據(jù);第二種公式化:將數(shù)表或線圖擬合成公式,編入程序計算出所需數(shù)據(jù)。

(2)數(shù)據(jù)庫存儲。將數(shù)表及線圖(經(jīng)離散化)中的數(shù)據(jù)按數(shù)據(jù)庫中的規(guī)定進行文件結(jié)構(gòu)化,如確定文件名、字段名、字段類型、字段寬度等,存放在數(shù)據(jù)庫中,數(shù)據(jù)獨立于應用程序,但又能為所有應用程序提供服務。第98頁,共140頁,2023年,2月20日,星期二3.1數(shù)表的程序化3.1數(shù)表的程序化

公式化:適用數(shù)表有精確的計算公式找到原來的理論計算公式或經(jīng)驗公式,編入應用程序

程序化:本來就無表達公式,或一時難以找到原來公式,在設(shè)計手冊或規(guī)范中,有各種形式的數(shù)表,從函數(shù)角度看,有單變量表,也有雙變量及多變量表。第99頁,共140頁,2023年,2月20日,星期二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.第100頁,共140頁,2023年,2月20日,星期二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};第101頁,共140頁,2023年,2月20日,星期二2.平鍵和鍵槽的剖面尺寸第102頁,共140頁,2023年,2月20日,星期二2.平鍵和鍵槽的剖面尺寸

查表時,根據(jù)設(shè)計中計算出來的直徑dgiven

,決定它位于表3—2軸徑的哪個范圍內(nèi),由此查出b,h,t,t1的值。軸徑D是一個數(shù)值范圍,編程時可將它的上限或下限記入一維數(shù)組內(nèi),表中其余列的值也放入各自的一維數(shù)組內(nèi)。第103頁,共140頁,2023年,2月20日,星期二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值*/存放表中^值*/第104頁,共140頁,2023年,2月20日,星期二第105頁,共140頁,2023年,2月20日,星期二3.包角影響系數(shù)K2(見表3—3)3.包角影響系數(shù)K2(見表3—3)

查表時根據(jù)a查K2值,a和K2、均為數(shù)值型,可設(shè)計兩個一維數(shù)組來實現(xiàn)。但因計算所得的實際包角a??赡懿粫檬潜?—3中所列的a值,自然相應的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ù)值。第106頁,共140頁,2023年,2月20日,星期二4.齒輪傳動工況系數(shù)KA(見表3—4)第107頁,共140頁,2023年,2月20日,星期二決定工況系數(shù)KA值時有兩個自變量,即原動機的載荷特性和工作機的載荷特性,它們原本無數(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}}第108頁,共140頁,2023年,2月20日,星期二圖3—3齒輪傳動工況系數(shù)KA查表流程圖第109頁,共140頁,2023年,2月20日,星期二表3-5軸肩圓角處理論應力集中系數(shù)αα第110頁,共140頁,2023年,2月20日,星期二

決定系數(shù)αα時有兩個自變量,即r/d和D/d,因此這是一個二維查表問題。將表中系數(shù)αα值記錄在一個二維數(shù)組AA(6,10)中。這個查表問題的特殊之處是兩個自變量及系數(shù)αα均有可能是連續(xù)量,這是因為由設(shè)計所得的D,d及r值在一定范圍內(nèi)是隨機的,因此必須采用二元函數(shù)插值。實際編程時,設(shè)已知Dgiven,dgiver,rgiven,再定義及初始化二維數(shù)組AA(6,1O),調(diào)用二元插值函數(shù)(見3.1.3節(jié))即可求得實際的αα值。第111頁,共140頁,2023年,2月20日,星期二第112頁,共140頁,2023年,2月20日,星期二3.3數(shù)表的公式化處理改寫成為:可見,g(x)是兩個基本插值多項式的線性組合。

線性插值

(兩點插值)X

x1x2x3……….xn

Y

y1y2y3……….yn

列表函數(shù)第113頁,共140頁,2023年,2月20日,星期二

線性插值C語言函數(shù)程序floatinter(floatx,floatx1,floatx2,floaty1,floaty2){floaty;y=y1+(y2-y1)/(x2-x1)*(x-x1);return(y);}第114頁,共140頁,2023年,2月20日,星期二拋物線插值(三點插值)

第115頁,共140頁,2023年,2月20日,星期二拋物線插值(三點插值)

第116頁,共140頁,2023年,2月20日,星期二拉格朗日插值(多點插值)第117頁,共140頁,2023年,2月20日,星期二3.3.3函數(shù)擬合

:函數(shù)插值存在的不足:①嚴格通過每個結(jié)點,復印了原有的結(jié)點誤差;②仍需將各結(jié)點數(shù)據(jù)進行存貯,占用存貯空間。函數(shù)擬合:曲線不要求通過已知結(jié)點,僅反映數(shù)據(jù)變化趨勢。1

、拉格朗日插值曲線2、函數(shù)擬合曲線第118頁,共140頁,2023年,2月20日,星期二最小二乘法函數(shù)擬合:曲線到各結(jié)點誤差平方和最小。步驟:

1)在坐標紙上繪出各結(jié)點,根據(jù)其趨勢繪制曲線圖形;

2)確定近似函數(shù),可為多項式、對數(shù)函數(shù)或指數(shù)函數(shù)等;

3)用最小二乘法求出待定系數(shù)。誤差函數(shù):求導數(shù):解方程求得方程系數(shù)a,b:例:直線段f(x)=a+bx的擬合:第119頁,共140頁,2023年,2月20日,星期二指數(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第120頁,共140頁,2023年,2月20日,星期二3.4

數(shù)據(jù)庫在CAD/CAM作業(yè)中的應用

VisualFoxPro數(shù)據(jù)庫管理系統(tǒng)

是一種關(guān)系型模式,為目前應用最廣泛的微機型系統(tǒng),被稱之為大眾型數(shù)據(jù)庫管理系統(tǒng);提供友好的集成環(huán)境,具有Windows窗口功能;可通過系統(tǒng)菜單、工具條或命令窗口進行數(shù)據(jù)庫的創(chuàng)建、維護和各種應用操作,包括數(shù)據(jù)記錄的輸入、修改、插入、刪除、剪切、拷貝、粘貼等作。有較強的數(shù)據(jù)管理功能、豐富的開發(fā)工具,用戶可利用編輯器、設(shè)計器、項目管理器等工具,開發(fā)功能齊全的應用程序。第121頁,共140頁,2023年,2月20日,星期二FoxPro數(shù)據(jù)類型

—字符型(character):用于表示包括漢字和各類字符在內(nèi)的字符型變量數(shù)值,一個字符占用一個字節(jié),字符型變量最多為254個字節(jié)。

—數(shù)字型(numeral):用于表示包括正號、負號、小數(shù)點及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é)。

第122頁,共140頁,2023年,2月20日,星期二數(shù)據(jù)庫的應用實例

支承塊(GB2235-80)數(shù)據(jù)庫表文件第123頁,共140頁,2023年,2月20日,星期二數(shù)據(jù)庫的應用實例

表3-9深溝球軸承輕(2)系列軸承型號尺寸/mm安裝尺寸mm額定動負荷kN額定靜負荷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

深溝球軸承第124頁,共140頁,2023年,2月20日,星期二數(shù)據(jù)庫結(jié)構(gòu)定義:數(shù)據(jù)記錄輸入:

APPEND

或:EDIT

或:BROWSE軸承型號:內(nèi)徑d:外徑D:寬度B:軸肩D1:孔徑D3:動負荷:第125頁,共140頁,2023年,2月20日,星期二第126頁,共140頁,2023年,2月20日,星期二第127頁,共140頁,2023年,2月20日,星期二第128頁,共140頁,2023年,2月20日,星期二第129頁,共140頁,2023年,2月20日,星期二3·1.2一元函數(shù)的插值設(shè)有一用數(shù)據(jù)表格給出的列表函數(shù)y--f(x),如表3—7所示。表3·7列表函數(shù)由于列表函數(shù)只能給出結(jié)點z·,z2,…,z"處的函數(shù)值y。,y2,…'Yn當自變量為結(jié)點的中間值時,就要用插值法求取其函數(shù)值。插值法的基本思想是在插值點附近選取幾個合適的結(jié)點,過這些選取的點構(gòu)造一個簡單函數(shù)g(z),在此小段上用g(z)代替原來函數(shù)廠(z),這樣插值點的函數(shù)值就用g(z)的值來代替。因此,插值的實質(zhì)問題是如何構(gòu)造一個既簡單又具有足夠精度的函數(shù)g(z)。第130頁,共140頁,2023年,2月20日,星期二

條件是給定z,求其函數(shù)值Y。由圖3—4可知,步驟如下:圖3—4線性插值示意圖

(1)選取網(wǎng)個相鄰自變量Xi與zH1,滿足條件zi<z<zi+l;

(2)過(zi,Yi)及(zm,Yi+·)兩點連直線參(z)代替原來的函數(shù)廠(z),則y為了一警(x--x,)+yi(3—1)

。Zi+1一Zi’。,為了與后面拋物線插值的公式在形式上取得一致,可將公式(3—1)改寫成.(3-2)第131頁,共140頁,2023年,2月20日,星期二從圖3—4可以看出,這種插值存在一定誤差,但當表格中自變量間隔較小,而插值精度又不要求很高時,是可以滿足使用要求的。線性插值程序的流程圖見圖3—5。符號說明如下:

z(行),y(咒)——一維數(shù)組,存放列表函數(shù)中z,了值;九——列表函數(shù)中結(jié)點數(shù);

z咖en,ygiven——已知的z插入值及求出的函數(shù)值。..藉讀者注意,C語言中一維數(shù)組下標是從0開始的,但圖3—5中的下標均從1開始,最簡單的辦法是在定義C語言數(shù)組時,設(shè)其體積為以+1,而對下標為0的數(shù)組元素不使用就是了。第132頁,共140頁,2023年,2月20日,星期二廠(z)上取三點,過三點作拋物線g(z),以g(z)替代廠(z),顯然可以獲得比線性插值精度好的結(jié)果,圖解示意圖如圖3—6所示。。圖3—5線性插值程序流程圖如已知插入值z,則圖3-6拋物線插值示意圖

_---毒暑煢莘嘉yi。蕁篆一X弘瓦j乏再i■乏jyi1。石i一恥-)(zi一川)川

+—魚]塑善!生阱1(3—3^—————————————————————————●’V:J-1…

’(zi+1一zi一1)(zi+1一.Zi)√¨、‘在拋物線插值中,關(guān)鍵是要根據(jù)插值點z選取合適的三個點,選取方法歸納如下:設(shè)插值點為z,且有zH<z≤zi,(主一3,4,…,7,z一1),(1)若lz—zHl≤lz—zil,即二靠近zH點,則選zi一2,zH,zi三個點,這時:第133頁,共140頁,2023年,2月20日,星期二3.1.3二元函數(shù)的插值表3—8為二元列表函數(shù)廠(zi,yi),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論