版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告三-1-
實(shí)驗(yàn)報(bào)告書
課程名稱:《數(shù)據(jù)結(jié)構(gòu)》
實(shí)驗(yàn)題目:實(shí)驗(yàn)三
棧
一、實(shí)驗(yàn)?zāi)康?/p>
(1)掌握棧與隊(duì)列的數(shù)據(jù)類型描述及特點(diǎn);
(2)掌握棧的順序和鏈?zhǔn)酱鎯?chǔ)存表示與基本算法的實(shí)現(xiàn);
(3)按照實(shí)驗(yàn)題目要求,獨(dú)立完成實(shí)際程序的編寫編寫、調(diào)試和運(yùn)行,并通過用例的運(yùn)行過程抓獲
相關(guān)屏面驗(yàn)證程序設(shè)計(jì)的正確性。
二'實(shí)驗(yàn)內(nèi)容
(1)實(shí)現(xiàn)順序棧的創(chuàng)建(初始化)、壓入(插入)、彈出(刪除)操作(數(shù)據(jù)元素類型自己選取,
如整型、字符型等,或者參照書上算法選取數(shù)據(jù)類型),并給出棧的每次操作變化狀態(tài);
(2)實(shí)現(xiàn)鏈棧的創(chuàng)建(初始化)、壓入(插入)、彈出(刪除)操作(數(shù)據(jù)元素類型自己選取,如
整型、字符型等,或者參照書上算法選取數(shù)據(jù)類型),要求給出棧的操作變化過程。
三'實(shí)驗(yàn)步驟
#include<stdio.h>
#include<stdlib.h>
#defineTRUE1
#defineFALSE0
SdefineStackSize50
typedefintStackElcmcntType;〃棧的順序存儲(chǔ)結(jié)構(gòu)定義
typedefstruct
StackElementTypeelem[StackSize];〃用來存放棧中元素的一堆數(shù)組
inttop;〃用來存放棧頂元素的下標(biāo)
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告三_________________________-2」
JSqStack;
voidInitStack(SqStack*s);
intIsEmpty(SqStack*s);
intIsFull(SqStack*s);
intPush(SqStack*s,StackElementTypee);
intPop(SqStack*s,StackElementType*e);
intGetTop(SqStack*s,StackElementType*e);
intGetStack(SqStack*s);
intmain()
(
SqStacks;
StackElementTypee;
StackElementTypex;
intflag=l;
while(flag!=0)
(
printf(〃二二二二順序棧的操作=二=\n〃);
printf(〃①初始化棧\n");
printf(〃②元素進(jìn)棧\n〃);
printf(,z③元素出棧\n〃);
printf(〃④顯示棧元素\n〃);
printf(〃⑤結(jié)束程序\n〃);
printf(〃請(qǐng)輸入需要進(jìn)行的操作:\n〃);
scanf&flag);
switch(flag)
(
case1:InitStack(&s);break;
case2:printf("元素進(jìn)棧,請(qǐng)輸入1個(gè)數(shù)據(jù):\n〃);
scanf&e);
Push(&s,e);
printf(〃進(jìn)棧成功!\n〃);break;
case3:printf("開始出棧!\n〃);
Pop(&s,&x);
printf("出棧成功!\n〃);break;
case4:GetStack(&s);break;
case5:return0;
default:printf("輸入步驟錯(cuò)誤!\n〃);
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告三-3-
)
return0;
)
voidInitStack(SqStack*s)
(
s->top=-l;
printf("棧創(chuàng)建成功\n");
)
intIsEmpty(SqStack*s)〃判棧s為空時(shí)返回值為真,反之為假
(
return(s->top==-1?TRUE:FALSE);
)
intIsFull(SqStack*s)〃判棧滿
(
return(s->top==StackSize-1?TRUE:FALSE);
)
intPush(SqStack*s,StackElementTypee)〃進(jìn)棧
(
if(s->top==StackSizeT)
(
return(FALSE);〃棧已滿
}
s->top++;
s->elem[s->top]=e;
return(TRUE);
)
intPop(SqStack*s,StackElementType*e)〃將棧s的棧頂元素彈出,放到e所指的存儲(chǔ)空間中
(
if(s->top==-1)
(
return(FALSE);
}
else
(
*e=s->elem[s->top];
s->top—;〃修改棧頂指針
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告三____________________-4」
return(TRUE);
}
)
intGetTop(SqStack*s,StackElementType*e)〃將棧s的棧頂元素彈出,放到e所指的存儲(chǔ)空間
中,但棧頂指針保持不變
(
if(s->top==T)〃棧為空
(
return(FALSE);
)
else
(
*e=s->elem[s->top];
return(TRUE);
}
)
intGetStack(SqStack*s)〃將當(dāng)前棧內(nèi)元素顯示出來
(
inti;
i=s->top;
printf(〃當(dāng)前棧內(nèi)元素:\n〃);
for(;i>-l;i--)
(
printfs->elem[i]);
)
printf(〃\n〃);
return(TRUE);
)
鏈棧的操作和順序棧十分相似,首先給出鏈棧的結(jié)構(gòu)定義
ttinclude<stdio.h>
#include<stdlib.h>
?defineTRUE1
#defineFALSE0
typedefintStackElementType;//鏈棧的結(jié)構(gòu)定義
typedefstructnode
(
StackElementTypedata;
structnode*next;
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告三-5.
}LinkStackNode;
typedefLinkStackNode*LinkStack;
voidInitStackNode(LinkStacktop);
intIsEmpty(LinkStacktop);
intPush(LinkStacktop,StackElementTypex);
intPop(LinkStacktop,StackElementType*x);
intGetStack(LinkStackNode*p);
intmain()
(
LinkStacks;
intcount;
s=(LinkStack)malloc(sizeof(LinkStackNode));
intflag=l;
while(flag!=O)
(
printf(〃二二二二鏈棧的操作二二二=\n〃);
printfC①初始化棧\n〃);
printf(,z②元素進(jìn)棧\n〃);
printf(z,③元素出棧\n〃);
printf(〃④顯示棧元素\n〃);
printf(,z⑤結(jié)束程序\n〃);
printf(〃請(qǐng)輸入需要進(jìn)行的操作:\n〃);
scanf&flag);
switch(flag)
(
case1:printf(〃初始化鏈棧!\n");
InitStackNode(s);
printf("初始化成功!\n〃);break;
case2:
inti;
for(i=0;i<10;i++)
(
Push(s,i);
)
printf(〃進(jìn)棧成功!\n");break;
case3:printf(〃開始出棧!\n");
Pop(s,&count);
printf("出棧成功!\n");break;
case4:GetStack(s);break;
case5:return0;
default:printf(〃輸入步驟錯(cuò)誤!\n〃);
)
)
return0;
《數(shù)據(jù)結(jié)構(gòu)》實(shí)驗(yàn)報(bào)告/-6.
voidInitStackNode(LinkStacktop)〃建立一個(gè)空鏈棧
(
top->next=NULL;
)
intIsEmpty(LinkStacktop)
(
if(top->next==NULL)
return(TRUE);
return(FALSE);
)
intPush(LinkStacktop,StackElementTypex)〃將數(shù)據(jù)元素x壓入棧top中
(
LinkStackNode*temp;
temp=(LinkStackNode*)malloc(sizeof(LinkStackNode));
if(temp二二NULL)
(
return(FALSE)"/申請(qǐng)空間失敗
)
temp->data=x;
temp->next=top->next;
top->next=temp;〃修改當(dāng)前棧頂指針
return(TRUE);
)
intPop(LinkStacktop,StackElementType*x)〃將棧top的棧頂元素彈出,放到x所指的存儲(chǔ)空
間中
{
LinkStackNode*temp;
temp=top->next;
if(temp二二NULL)〃棧為空
(
r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年房產(chǎn)認(rèn)購訂金合同
- 2025年粵教新版八年級(jí)地理上冊(cè)月考試卷含答案
- 2025年滬科版選擇性必修1歷史上冊(cè)月考試卷
- 2025年人教A新版九年級(jí)歷史下冊(cè)階段測(cè)試試卷含答案
- 2025年滬科版選修歷史上冊(cè)月考試卷含答案
- 2025年人教新課標(biāo)九年級(jí)語文下冊(cè)階段測(cè)試試卷含答案
- 2025年粵教版高三歷史上冊(cè)月考試卷含答案
- 二零二五版嬰幼兒奶粉跨境電商進(jìn)口合同范本4篇
- 二零二五年度農(nóng)藥企業(yè)信息化管理系統(tǒng)開發(fā)合同
- 二零二五版門窗行業(yè)綠色制造體系建設(shè)合同4篇
- 河道綜合治理工程技術(shù)投標(biāo)文件
- 專題24 短文填空 選詞填空 2024年中考英語真題分類匯編
- 再生障礙性貧血課件
- 產(chǎn)后抑郁癥的護(hù)理查房
- 2024年江蘇護(hù)理職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 電能質(zhì)量與安全課件
- 醫(yī)藥營銷團(tuán)隊(duì)建設(shè)與管理
- 工程項(xiàng)目設(shè)計(jì)工作管理方案及設(shè)計(jì)優(yōu)化措施
- 圍場(chǎng)滿族蒙古族自治縣金匯螢石開采有限公司三義號(hào)螢石礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 小升初幼升小擇校畢業(yè)升學(xué)兒童簡歷
- 資金支付審批單
評(píng)論
0/150
提交評(píng)論