《括號匹配 實驗報告材料》由會員分享,可在線閱讀,更多相關(guān)《括號匹配 實驗報告材料(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、word
本科生實驗報告
實驗課程 數(shù)據(jù)結(jié)構(gòu)
學(xué)院名稱 核技術(shù)與自動化工程學(xué)院
專業(yè)名稱 測控技術(shù)與儀器專業(yè)
學(xué)生某某
學(xué)生學(xué)號
指導(dǎo)教師
實驗地點 6C802
實驗成績
二〇16年3 月二〇16 年 3月
填寫說明
1、 適用
2、于本科生所有的實驗報告〔印制實驗報告冊除外〕;
2、 專業(yè)填寫為專業(yè)全稱,有專業(yè)方向的用小括號標明;
3、 格式要求:
① 用A4紙雙面打印〔封面雙面打印〕或在A4大小紙上用藍黑色水筆書寫。
② 打印排版:正文用宋體小四號,1.5倍行距,頁邊距采取默認形式〔上下2.54cm,左右2.54cm,頁眉1.5cm,頁腳1.75cm〕。字符間距為默認值〔縮放100%,間距:標準〕;頁碼用小五號字底端居中。
③ 具體要求:
題目〔二號黑體居中〕;
摘要〔“摘要〞二字用小二號黑體居中,隔行書寫摘要的文字局部,小4號宋體〕;
關(guān)鍵詞〔隔行頂格書寫“關(guān)鍵詞〞三字,提煉3-5個關(guān)鍵詞,用分號隔開
3、,小4號黑體);
正文局部采用三級標題;
第1章 ××(小二號黑體居中,段前0.5行)
1.1 ×××××小三號黑體×××××〔段前、段后0.5行〕
小四號黑體〔段前、段后0.5行〕
參考文獻〔黑體小二號居中,段前0.5行〕,參考文獻用五號宋體,參照《參考文獻著錄規(guī)如此〔GB/T 7714-2005〕》。
一、 問題描述
假設(shè)表達式中允許包含兩種括號:圓括號和方括號,其嵌套的順序隨意,即〔[]〔〕〕或[〔[][]〕]等為正確的格式,[()等為不正確的格式。檢驗括號是否匹配。
二、問題分析
〔1〕數(shù)據(jù)條件要求
輸入隨意含有[,],(,),{,}
4、,的數(shù)據(jù)
利用棧的特性完成此次括號匹配。
〔2〕操作條件要求
Visual C++中利用棧的應(yīng)用表達此過程
三、數(shù)據(jù)結(jié)構(gòu)設(shè)計
〔1〕邏輯結(jié)構(gòu)設(shè)計
棧的結(jié)構(gòu)運行
〔2〕物理結(jié)構(gòu)設(shè)計
棧的應(yīng)用
四、算法設(shè)計〔核心子函數(shù)〕
〔1〕算法列表
序號
名稱
函數(shù)表示符
操作說明
1
輸出函數(shù)
Printf
輸出一個函數(shù)的值
2
主函數(shù)
main
程序的主函數(shù)
3
條件語句
If
表示條件的選擇
4
字符型語句
Char
表示字符
〔2〕算法描述〔描述核心算法〕
.. Seqstack *Seqstack_Init(
5、)
{
Seqstack *seqstack;
seqstack=(Seqstack *)malloc(sizeof(Seqstack));
seqstack->top=0;
return seqstack;
}
int Seqstack_Pop(Seqstack *seqstack)
{
if (seqstack->top==0)
{
printf("棧為空\n");
return 0;
}
seqstack->top--;
retur
6、n seqstack->ch[seqstack->top];
}
void seqstack_Push(Seqstack *seqstack,char c)
{
if (seqstack->top==Length)
{
printf("棧溢出\n");
return ;
}
seqstack->ch[seqstack->top]=c;
seqstack->top++;
}
void check_symbol(Seqstack *seqstack,char *a)
{
int i;
7、
seqstack_Push(seqstack,a[0]);
for (i=1;ich[seqstack->top-1]=='[')||(a[i]==')'&&seqstack->ch[seqstack->top-1]=='(')||(a[i]=='}'&&seqstack->ch[seqstack->top-1]=='{'))
{
Seqstack_Pop(seqstack);
}
8、 else
{
seqstack_Push(seqstack,a[i]);
}
}
if(seqstack->top==0)
{
printf("括號匹配\n\n");
}
else
{
printf("括號不匹配\n\n");
}
利用棧的先進后出的性質(zhì)完成括號匹配的要求。
在算法中設(shè)置一個棧,沒讀入一個括號,假如是右括號,如此或者使置于棧頂?shù)淖罴逼鹊钠诖靡韵?,或者是不合法的情況;假如是左括號,如此作為一個新的更急迫
9、的期待壓入棧中,自然使原有的在棧中的所有未消解的期待的急迫性都降了一級。
五、數(shù)據(jù)說明〔變量含義〕
變量i表示循環(huán)變量;
Length表示棧的長度;
變量a表示數(shù)組
六、源程序清單
. #include
#include
#include
#define Length 100
typedef struct stack
{
char ch[50];
int top;
}Seqstack;
Seqstack *Seqstack_Init()
{
Seqstac
10、k *seqstack;
seqstack=(Seqstack *)malloc(sizeof(Seqstack));
seqstack->top=0;
return seqstack;
}
int Seqstack_Pop(Seqstack *seqstack)
{
if (seqstack->top==0)
{
printf("棧為空\n");
return 0;
}
seqstack->top--;
return seqstack->ch[se
11、qstack->top];
}
void seqstack_Push(Seqstack *seqstack,char c)
{
if (seqstack->top==Length)
{
printf("棧溢出\n");
return ;
}
seqstack->ch[seqstack->top]=c;
seqstack->top++;
}
void check_symbol(Seqstack *seqstack,char *a)
{
int i;
seqstack_Pu
12、sh(seqstack,a[0]);
for (i=1;ich[seqstack->top-1]=='[')||(a[i]==')'&&seqstack->ch[seqstack->top-1]=='(')||(a[i]=='}'&&seqstack->ch[seqstack->top-1]=='{'))
{
Seqstack_Pop(seqstack);
}
else
13、 {
seqstack_Push(seqstack,a[i]);
}
}
if(seqstack->top==0)
{
printf("括號匹配\n\n");
}
else
{
printf("括號不匹配\n\n");
}
}
int main()
{
char s[50];
Seqstack *seqstack;
seqstack=Seqstack_Init();
14、 printf("輸入一串括號:\n");
scanf("%s",s);
check_symbol(seqstack,s);
return 0;
}
.
七、調(diào)試記錄
程序第六十七行出錯
運行正確
八、運行說明
學(xué)生實驗 心得
通過這次實驗課程,加強了對循環(huán)函數(shù),棧的理解和應(yīng)用,數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計,相對來說還是一個較大的工程,,雖然里面的內(nèi)容不是很完備,但總體上還是一個比擬能要表現(xiàn)數(shù)據(jù)結(jié)構(gòu)的知識點能力的程序了,這個設(shè)計讓我們在課堂中學(xué)到的理論知識,解決相應(yīng)的實際問題,深入理解和靈活掌握所學(xué)的內(nèi)容,使我們實踐的過程中收獲匪淺,認真去做,踏踏實實,靜靜思考,慢慢進步,會有收獲。
利用棧能夠做很多比擬簡單的判斷,簡化了操作的過程。
學(xué)生〔簽名〕:喻志強
2016 年 4 月 14 日
指導(dǎo)
教師
評語
成績評定:
指導(dǎo)教師〔簽名〕:
年 月 日
.
15 / 15