版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
DATA1065865姓名學號成績班級李紅976105995機97.6ABCDEFG數據結構第二章
數據結構與算法(續(xù))
2.3棧和隊列棧和隊列是兩種特殊的線性表,它們是運算時要受到某些限制的線性表,故也稱為限定性的數據結構。(續(xù))
隊列的主要運算(1)設置一個空隊列;(2)插入一個新的隊尾元素,稱為進隊;(3)刪除隊頭元素,稱為出隊;(4)讀取隊頭元素;2.3.2隊列2.3.2.1隊列的定義與運算
定義:一種特殊的線性結構,限定只能在表的一端進行插入,在表的另一端進行刪除的線性表。此種結構稱為先進先出(FIFO)表。
a1,
a2,
a3,
a4,…………
an-1,
an隊列示意圖隊頭隊尾2.隊列的存儲結構(1)順序存儲結構(a)線性隊列(b)循環(huán)隊列(a)線性隊列
3210(a)rear=front=-1(隊空)e3e4(c)e1,e2出隊,e4入隊
隊滿rear=4fronte1e2e3
(b)rearfront(b)e1,e2,e3入隊隊空時,令rear=front=-1,當有新元素入隊時,尾指針加1,當有元素出隊時,頭指針加1。故在非空隊列中,頭指針始終指向隊頭元素前一個位置,而尾指針始終指向隊尾元素的位置(b)
循環(huán)隊列
rearfront
0123(3)隊空隊滿條件:(Q.rear+1)%MAX=Q.front注:實際上為了避免與隊空標志沖突,還留有一個空間。將頭尾連接成一個環(huán),形成循環(huán)隊列。
rear(1)一般情況front0123e4e3
(2)
隊滿fronte3
e40123reare5循環(huán)隊列中加入一個元素的算法:
intEnQueue(intQ[],intx,int*pf,int*pr)Q[max]已有的循環(huán)隊列將插入的值已有隊列的頭指針已有隊列的尾指針循環(huán)隊列中加入一個元素的算法:
intEnQueue(intQ[],intx,int*pf,int*pr){intfront,rear;front=*pf;rear=*pr;if((rear+1)%MAX==front)return(0);else{rear=(rear+1)%MAX;Q[rear]=x;*pr=rear;return(1);}}
rearMax=4,Rear+1=4front0123e4e3
rear(Rear+1)%4=0front0123e4e3rear
rearfront0123e4e3x循環(huán)隊列中刪除一個元素的算法:intDeQueue(intQ[],int*py,int*pf,int*pr)已有的循環(huán)隊列返回刪除的值的地址已有隊列的頭指針已有隊列的尾指針循環(huán)隊列中刪除一個元素的算法:intDeQueue(intQ[],int*py,int*pf,int*pr){intfront,rear;front=*pf;rear=*pr;if(rear==front)return(0);else{front=(front+1)%MAX;*py=Q[front];*pf=front;return(1);}}ana2a1
ana3a2
Q.frontQ.rear刪除一個元素添加一個元素e^a1a2anQ.frontQ.rear
(2)鏈式存儲結構Q.frontQ.rear隊頭隊尾Q.rearQ.front2.4數組2.4.1二維數組的定義a1a11a12……..a1n
a2a21a22……..a2n
amam1am2……..amn
….ai=(ai1,
ai2,
……..
,
ain)(1<=i<=n)(1)
按行優(yōu)先順序存放(2)
按列優(yōu)先順序存放1、
特殊矩陣(1)
下三角陣(2)
三對角陣1、
稀疏矩陣(1)
順序存儲結構——三元組表示法(2)
順序存儲結構稀疏矩陣的轉置運算(3)
數組的鏈接存儲結構——十字鏈表結構2.4.2數組的順序存儲結構2.4.3矩陣的壓縮存儲(1)
按行優(yōu)先順序存放(2)
按列優(yōu)先順序存放1、
特殊矩陣(1)
下三角陣(2)
三對角陣1、
稀疏矩陣(1)
順序存儲結構——三元組表示法(2)
順序存儲結構稀疏矩陣的轉置運算(3)
數組的鏈接存儲結構——十字鏈表結構2.4.2數組的順序存儲結構2.4.3矩陣的壓縮存儲
amn……..
am2am1……….a2n……..
a22a21a1n
…….a12
a11
a11a12……..a1n
a21a22……..a2n
am1am2……..amn
….loc(aij)=loc(a11)+[(i-1)n+(j-1)]S
按行優(yōu)先順序存放
amn……..
a2n
a1n……….
am2……..
a22
a12
am1
…….
a21
a11
a11
a12
……..
a1n
a21
a22……..
a2n
am1
am2
……..
amn
….loc(aij)=loc(a11)+[(j-1)m+(i-1)]S
按列優(yōu)先順序存放
a11
0
0
……..0
a21a22
0
……..0
an1an2
an3……..ann
….0A=按行優(yōu)先存放{a11,
a21,
a22,
a31,
a32,…,
an1,
an2,…,
ann}
前i-1行非零元素個數∑R=i(i-1)2loc(aij)=loc(a11)+[(+(j-1)]S
i(i-1)2i-1R=1下三角陣
a11
a120
…………..0
a21a22
a23
0
………...00
0
……an-1,n-2an-1.n-1an-1,n………..A=
0
a21a22
a23
0
…..00
0
…………….an,n-1ann.按行優(yōu)先存放{a11,
a12,
a21,
a22,
a23,a32,a34,
…an,n-1,
ann}
loc(aij)=loc(a11)+[2(i-1)n+(j-1)]S
三對角陣
7000150
0-40000
-2000021000-100M=2164-214-143-4221551711列行值順序存儲結構——三元組表示法
7000150
0-40000
-2000021000-1002164-143-4221551711-214
700-2
0-400
00-100000
15000
00021順序存儲結構稀疏矩陣的轉置運算
-134711-241-42215152146
求轉置矩陣的算法描述為:StatusTransposeSMatrix(TSMatrixM,TSMatrix&T){//采用三元組表存儲稀疏矩陣,求稀疏矩陣M的轉置矩陣TT.mu=M.nu;T.nu=M.mu;T.tu=M.tu;//互換行列數if(T.tu<>0){q=1;for(col=1;col<=M.nu;++col)//對稀疏矩陣的每一列分別處理
for(p=1;p<=M.tu;++p)//按行掃描三元組表
if(M.data[P].j==col{T.data[q].i=M.data[p].j;T.data[q].j=M.data[p].i;T.data[q].e=M.data[p].e;++q}}returnOK;}//TransposeSMatrix
7000150
0-40000
-2000021
000-100M=2-4∧∧2515∧∧11-2∧4621∧∧41714-1∧∧3jerightdowni2.4數組(線性表的推廣)2.4.1二維數組的定義a1a11a12……..a1n
a2a21a22……..a2n
amam1am2……..amn
….ai=(ai1,
ai2,
……..
,
ain)(1<=i<=n)數組的運算主要是存取元素、修改相應的元素。(1)
按行優(yōu)先順序存放(2)
按列優(yōu)先順序存放2.4.3矩陣的壓縮存儲1、
特殊矩陣:值相同元素或非零元素的分布具有一定規(guī)律。(1)
下三角陣(2)
三對角陣2、
稀疏矩陣:元素分布無規(guī)律。(1)
順序存儲結構——三元組表示法(2)
順序存儲結構稀疏矩陣的轉置運算(3)
數組的鏈接存儲結構——十字鏈表結構2.4.2數組的順序存儲結構
a11a12…….a1n
a21
a22……..a2n……….am1
am2……..
amn
a11a12……..a1n
a21a22……..a2n
am1am2……..amn
….loc(aij)=loc(a11)+[(i-1)n+(j-1)]S
按行優(yōu)先順序存放
a11
a21…….
am1
a12
a22……..
am2……….
a1n
a2n……..
amn
a11
a12
……..
a1n
a21
a22……..
a2n
am1
am2
……..
amn
….loc(aij)=loc(a11)+[(j-1)m+(i-1)]S
按列優(yōu)先順序存放
a11
0
0
……..0
a21a22
0
……..0
an1an2
an3……..ann
….0A=按行優(yōu)先存放{a11,
a21,
a22,
a31,
a32,…,
an1,
an2,…,
ann}
前i-1行非零元素個數∑R=i(i-1)2loc(aij)=loc(a11)+[(i(i-1)/2+(j-1)]S
i-1R=1下三角陣
a11
a120
…………..0
a21a22
a23
0
………...00
0
……an-1,n-2an-1.n-1an-1,n………..A=
0
a32a33
a34
0
…..00
0
…………….an,n-1an,n按行優(yōu)先存放{a11,
a12,
a21,
a22,
a23,a32,a33,
…an,n-1,
an,n}
loc(aij)=loc(a11)+2(i-1)+(j-1)
三對角陣
7000150
0-40000
-2000021000-100M=2164-214-143-4221551711列行值順序存儲結構——三元組表示法
7000150
0-40000
-2000021000-1002164-143-4221551711-214
700-2
0-400150000000
00-10
00021順序存儲結構稀疏矩陣的轉置運算
-134711-241-42215152146
求轉置矩陣的算法描述為:StatusTransposeSMatrix(TSMatrixM,TSMatrix&T){T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;//互換行列數if(T.tu!=0){q=1;for(col=1;col<=M.nu;++col)//對稀疏矩陣的每一列分別處理
for(p=1;p<=M.tu;++p)//按行掃描三元組表
if(M.data[P].j==col{T.data[q].i=M.data[p].j;T.data[q].j=M.data[p].i;T.data[q].e=M.data[p].e;++q}}returnOK;}//TransposeSMatrix
7000150
0-40000
-2000021
000-100M=22-4∧∧1515∧∧41-2∧4621∧∧11734-1∧∧^ijedownright鏈式存儲結構表示第3列空
7000150
0-40000
-2000021
000-100M=22-4∧∧1515∧∧41-2∧4621∧∧11734-1∧∧^ijedownright鏈式存儲結構作業(yè):P76第12、16題第18、19題A+B*C-D/E;top1初態(tài);(a)top2OSNSBA+;(b)OS*C
NST1=B*CA+;(c)NSOST1T2;(d)NSOST2=A+T1EDT2/-;(e)NSOST3T2-;(f)T3=D/ENSOS(g)NSOST4;T4=T2-T3(h)A-B/C+D*E;top2初態(tài);(a)OSNSBA;(b)OS/C
NSA;(c)NSOST1T1=B/CA;(d)NSOST1DE+*T2T1A+;(e)NSOST2=D*ET2T3+;(f)T3=A-T1NSOST4=T2+T3(g)NSOST4;(h)優(yōu)先級相同時,應先處理棧中數據錯在哪?P76#11
假設一個算術表達式中包含圓括弧、方括弧和花括弧三種類型的括弧,編寫一個判別表達式中括弧是否正確配對的函數.P76#11
假設一個算術表達式中包含圓括弧、方括弧和花括弧三種類型的括弧,編寫一個判別表達式中括弧是否正確配對的函數.voidmain(){intlen,tag;charexp[size]=“dsgdsg(wetewt{eewtwrwer)etewtewt[wetwet]etwet}";len=strlen(exp);tag=Correct(exp,len);if(tag==1)
printf("right\n");else
printf("wrong\n");}輸出結果:wrongP76#12
設棧S為空,隊Q的狀態(tài)是abcd,其中a為隊首元素,d為隊尾元素,經過下面兩個操作后,隊Q的狀態(tài)是()。(1)刪除隊Q中的元素,將刪除的元素插入棧S,直到隊Q為空。(2)依次將棧S中的元素插入隊Q,直到棧S為空。(a)abcd(b)acbd(c)dcba(d)bacddcbafrontreartop隊Q棧Sfrontreardcbatop隊Q棧Sabcdfrontreartop隊Q棧ScP76#13
若進棧序列為3,5,7,9,進棧過程中可以出棧,則不可能的一個出棧次序是()。(a)7,5,3,9(b)
9,7,5,3(c)7,5,9,3(d)
9,5,7,3P76#13
若進棧序列為3,5,7,9,進棧過程中可以出棧,則不可能的一個出棧次序是()。(a)7,5,3,9(b)
9,7,5,3(c)7,5,9,3(d)
9,5,7,3dA[n]A[T+1]A[T]….A[1]A[T]是棧頂元素T103040baseP76#14….T=T+1P76#15用一維數組設計棧,初態(tài)是???,top=0?,F有輸入序列是a、b、c、d,經過push、push、pop、push、pop、push操作后,輸出序列是(),棧頂指針是(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年版房地產買賣合同模板
- 2024年港口疏浚及堤壩修建合同3篇
- 勞動合同書電子版
- 水甲苯精餾塔課程設計
- 插班課程設計案例分析
- 管道課程設計小結
- 航空物流課程設計
- 航天研學課程設計
- 烘焙網絡營銷課程設計
- 機械小車課程設計
- 中藥破壁飲片文稿專家講座
- 2025年高考語文備考之名著閱讀《鄉(xiāng)土中國》重要概念解釋一覽表
- JG197-2006 預應力混凝土空心方樁
- 醫(yī)院護理培訓課件:《安全注射》
- 變、配電室門禁管理制度
- 11304+《管理案例分析》紙考2023.12
- 《淺談跳繩體育游戲的實踐研究》 論文
- 《勇敢面對挫折和困難》參考課件
- 小學體育期末檢測方案
- 2023-2024學年福建省莆田市荔城區(qū)中山中學、九中聯(lián)考九年級(上)期末數學試卷
- 接觸網設備故障應急處理
評論
0/150
提交評論