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