軟件基礎1011第四章第五章數據結構_第1頁
軟件基礎1011第四章第五章數據結構_第2頁
軟件基礎1011第四章第五章數據結構_第3頁
軟件基礎1011第四章第五章數據結構_第4頁
軟件基礎1011第四章第五章數據結構_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第四章C數據處理是編制計算機程序的主要工作,我們可以發(fā)現往往有些數據相互之間關系密數據對象很復雜,描述對象的信息有多重層次關系時,處理更為。結構的定義和單 { /*定義所有成員的數據類 shortcharmonth[3];shortyear;{/*成員定義開shortcharmonth[3];shortyear;};/*成員定義結 {{{shortshortshortcharcharcharshortshortshort}}}structd3。這種結構類型含有3個成員year,monthstruct shortdaycharmonth[3]shortstruct{

結構指針 shortshortyear;structdated1,d2[3],指針d3。struct{shortday;shortyear;}typedefstructdateDATEd2[3],

#defineDATEstruct{shortday;shortyear;}DATEd2[3],表示先將structdate定義DATE,然后DATE定義類型(可以同時定變量整型變量year的字節(jié)數之和。sizeof(structdate)=sizeof(day)+sizeof(month)+sizeof(year)=2+3+2=際需要的空間為8字節(jié)。shortshortbytebytebytebytebytebyteshortbytebytebytebyte short A{B

{AAA空間B空間A{shortA

結構指針結構指針例如:pe例如:pf

結構指針

結構變量例如:pgDATE例如:phDATE

結構指針 動態(tài)結構數※結構運算符包括“.”和“->”。 pd=&d;

結構指針

結構變量Apr⊙結構變量成員的符d.day=17

d.month[0]=d.month[1]=d.year=2000;

⊙結構指針對象成員的符“->”pd->day=17;pd->month[0]=pd->month[1]=pd->year=2000;DATEd1,d2,d2=*pd=d2.day=d1.day;d2.year=d1.year;

pd->day= pd->.year=d1.year;Annext,將多{ A若表尾的指針成員指向NULL,這樣的鏈表稱為單向鏈表。

構變量head

就 頭,因鏈

結構變量

例如,定義結構變量:Ahead;例如,定義結構指針:A*first;

例如,定義結構變量:Alast;

結構變量

2例如,定義結構指針:A

結構指針tail A*first; first=NULL;待插入結點 用指針node指向非空鏈表 first非空 ⊙表中前插入操

插入點nn

①node->next= ①node->next=prev-①

n

②first= ②prev->next= 100定義首指針和尾指針 A*first,初始鏈表為空表 first=tail=待插入結點 用指針node指向first=tail=node;

first=tail=node; 指針tail看成是表中后插入的當前結點指針now。以指向首結點(循環(huán)鏈表),因此在后插入時統一用#next①node->next=now-②now->next=now /*now

n#

node

#n#

要和處理N個數據,可以根據數據量的情況,考慮采用數組或者鏈表以實現不同

AApa=×××函數函數函數函數函數函數return語句,可以將一個基本類型的數據或者一個地址值返回(傳函數A獲得intb,intintc=b=returnintintreturn據轉換的隱式規(guī)則,先將實參轉換成形參的數據類型,然后數據。mainabswap1ay也是變量。由swap1中的變量交換操作沒有改變mainab的值。{shorta=5,①swap1(a,b);}

voidswap1(inta,int{int t= a= y=}

a=5,b=main: main: swap1: swap1: swap1:3 5 ? ? ?35???main:55swap1:

(數據)

main:33swap1:

main:55swap1:

(數據)

main:35swap1:3535 35

swap1: ?t=?

swap1:main:55?②

(數據)③a=y;swap1:

main:swap1:33

main:55?②

(數據)③a=y;swap1:

main:3333④t=

t=

y=maina和b是變量實參&a和&b是地址swap2ay是指針。由于調用語swap2(&a&b),mainabswap2ay,使swap2中對*a和*y的操作,mainab進行操作,從而改變了它們的數值。{

shorta=5,①swap2(&a,

n”,a,b); voidswap2(int*a,int{int t= *a= *y=}

a=3,b=55

main:???3 swap2:???35

33

5

33

sF2:*y

(地址swap2:

②t=

swap2:t

源文件inta,b;staticintc;{externint}intd;{}

源文件staticintb;{}intg;{externint}sub1(sub1(sub3(sub4(sub5({{{{}}}}if(n>n!=n?(n-if(a%b!=(a,b)=(b,if(n>{moveN(n-1,from,tmp,to);moveOne(n,from,to);moveN(n-1,tmp,to,from);}if(n==n!=if(a%b==(a,b)=if(n==moveOne(1,from,short(a,{shorta,{shorta,b,r;intr=(a,if(a%/*printf(“r=%d\n”,r=(b,a%/*}/*返回 }遞歸函數比較適用于用遞歸算法描述的問題(遞歸問題),但也可以用來解決非遞歸問題。而非遞歸函數不僅可以用來解決非遞歸問題,也可以用來解決遞歸問題。A B A B intstep=0;moveOne(intn,charfrom,char{printf("movechip(%d)",n);printf("from%c",from);printf("to%c\n",to);}{shortn;scanf("%d",&n);moveN(n,'A','B','C');

voidmoveN(n,from,to,tmp)intn;charfrom,to,tmp;{if(n==moveOne(1,from,{moveN(n-1,from,tmp,to);moveOne(n,from,to);moveN(n-1,tmp,to,from);}}}short(shorta,short{intif(a%r=(b,a%}{shorta,b,r;r=(a,b);printf(“r=%d\n”,r);}

short(shorta,short{intwhile(r=a%{a=b=}}{shorta,b,r;r=(a,b);printf(“r=%d\n”,r);} #include<stdio.h>#defineNstructN{intn;N*next;}*first;voidprt(N*head){Nprintf(“n=%d\n”,node->n);}

#include<stdio.h>#defineNstructnodeN{intn;N*next;}*first;voidprt(N*head){}

int

集合,則稱B是數據結構。Kk1k2(K={k1k2,…,kn}。Rr1,r2,…R={r1,r2,…,rm|ri=(ks,kt),ks,kt∈K},表示在結點定義:B=(K,R),K={0,1,…,9},R={GT,LT},其中,GT1,0)(2021)LT0,1)(0,2)(12)kk k={k,k,k={ik|i=1,...,m}={1k,2k,…,若結點k的指針場pk有h個分量,每個指針場分量都對應于R的一個關系rj(j=1h),pk={pjk|j=1,...,h}={p1k,p2k,…,……結點k的單元 結點k的數據場 假定對應于一種關系rj的指針場pjk,需要指向t(j)個結點,即:pjk{pjkk|k=1t(jpj1k,pjt(j)k},則pk又可以進一步記為pk={p11k,…,p1t(1)k,p21k,…,p2t(2)k,…,ph1k,…,phk={k,1k,2k,…,mk,p11k,…,p1t(1)k,p21k,…,p2t(2)k,…,ph1k,…,phφ…φ……………rr

前 后 直接稱k是k’的前件,k’是k的后件。

多個關系

k’K={1,2,3,4,5,6,7},R={N,T},N={(1,2),(1,4),(2,3),(3,7),(6,3),T2,64,55,26,7)}

結點12156374336 6T關系關系14475若對于任何一對結點(k,k’)都成立k’=k+s(s為單元的大小,固定長度),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論