2023年數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)心得體會(huì)200字(三篇)

字號(hào):

    我們?cè)谝恍┦虑樯鲜艿絾l(fā)后,應(yīng)該馬上記錄下來(lái),寫(xiě)一篇心得體會(huì),這樣我們可以養(yǎng)成良好的總結(jié)方法。我們想要好好寫(xiě)一篇心得體會(huì),可是卻無(wú)從下手嗎?下面是小編幫大家整理的優(yōu)秀心得體會(huì)范文,供大家參考借鑒,希望可以幫助到有需要的朋友。
    數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)心得體會(huì)200字篇一
    設(shè)計(jì)結(jié)束后要寫(xiě)出課程設(shè)計(jì)報(bào)告,以作為整個(gè)課程設(shè)計(jì)評(píng)分的書(shū)面依據(jù)和存檔材料。設(shè)計(jì)報(bào)告以規(guī)定格式的電子文檔書(shū)寫(xiě),打印并裝訂,排版及圖,表要清楚,工整。 裝訂順序如下:封面、目錄、正文。正文包括以下7個(gè)內(nèi)容:
    1、需求分析
    陳述說(shuō)明程序設(shè)計(jì)的任務(wù),強(qiáng)調(diào)的是程序要做什么 ,需要什么結(jié)果、所能達(dá)到的功能。
    2、概要設(shè)計(jì)
    說(shuō)明本程序中用到的所有抽象數(shù)據(jù)類型的定義,主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系。3.詳細(xì)設(shè)計(jì)
    實(shí)現(xiàn)概要設(shè)計(jì)中定義的所有數(shù)據(jù)類型,對(duì)每個(gè)操作只需要寫(xiě)出偽碼算法;對(duì)主程序和其他模塊也都需要寫(xiě)出偽碼算法(偽碼算法達(dá)到的詳細(xì)程度建議為:按照偽碼算法可以在計(jì)算機(jī)鍵盤(pán)直接輸入高級(jí)程序設(shè)計(jì)語(yǔ)言程序);可采用流程圖、n s 圖進(jìn)行描述,畫(huà)出函數(shù)和過(guò)程的調(diào)用關(guān)系圖。
    4、調(diào)試分析
    內(nèi)容包括:
    a.調(diào)試過(guò)程中遇到的問(wèn)題是如何解決的以及對(duì)設(shè)計(jì)與實(shí)現(xiàn)的回顧討論和分析; b.算法的時(shí)空分析(包括基本操作和其他算法的時(shí)間復(fù)雜度和空間復(fù)雜度的分析)和 改進(jìn)設(shè)想;
    c.經(jīng)驗(yàn)和體會(huì)等。5.測(cè)試結(jié)果
    列出你的測(cè)試結(jié)果,包括輸入和輸出。這里的測(cè)試數(shù)據(jù)應(yīng)該完整和嚴(yán)格,最好多于需求分析中所列。
    6、參考文獻(xiàn)
    列出參考的相關(guān)資料和書(shū)籍。
    封面格式如下:
    數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
    班級(jí):_____ _____ _____ _________
    姓名:____________________
    指導(dǎo)教師:___________________
    成績(jī):__________________________
    信息工程學(xué)院
    年月日
    目錄
    1、需求分析 ………………………………………………
    22.概要設(shè)計(jì)………………………………………………2
    3、詳細(xì)設(shè)計(jì) ………………………………………………2
    4、調(diào)試分析 ………………………………………………2
    5、測(cè)試結(jié)果… ……………………………………………2 參考文獻(xiàn) …………………………………………………6
    附錄……………………………………………………
    一、需求分析
    二、概要設(shè)計(jì)
    三、詳細(xì)設(shè)計(jì)
    四、調(diào)試分析
    五、測(cè)試結(jié)果
    六、參考文獻(xiàn)
    七、附錄
    附錄為程序代碼!4
    數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)心得體會(huì)200字篇二
    《數(shù)據(jù)結(jié)構(gòu)》
    課程設(shè)計(jì)報(bào)告
    學(xué) 號(hào) 姓 名 班 級(jí) 指導(dǎo)教師
    xxx xxx xxx xxx 安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院
    2014年6月
    利用棧實(shí)現(xiàn)迷宮問(wèn)題的求解
    一、問(wèn)題描述
    以一個(gè)m*n的長(zhǎng)方陣表示迷宮,0和1分別表示迷宮中的通路和墻壁。設(shè)計(jì)一個(gè)程序,對(duì)任意設(shè)定的迷宮,求出一條從入口到出口的通路,或得出米有通路的結(jié)論。
    二、設(shè)計(jì)思路
    (1)以二維數(shù)組maze[m][n]表示迷宮,數(shù)組中元素值為0表示通路,1表示障礙。
    (2)其中迷宮的入口位置和出口位置默認(rèn)于maze數(shù)組的起始元素位置和最后個(gè)元素位置。
    (3)以鏈表作存儲(chǔ)結(jié)構(gòu)的棧類型,實(shí)現(xiàn)求解迷宮的非遞歸程序。
    三、數(shù)據(jù)結(jié)構(gòu)定義 typedef struct{
    int x; int y; }item; typedef struct{ int x,y,d; }datatype; typedef struct{ datatype data[1000]; int top; }seqstack,*pseqstack;
    typedef struct{ datatype data[1000]; int top; }seqstack,*pseqstack;
    四、程序清單 #include
    #include
    #include
    #define m 6 #define n 8 int maze[m+2][n+2]={{1,1,1,1,1,1,1,1,1,1},
    typedef struct{
    {1,0,1,1,1,0,1,1,1,1}, {1,0,0,0,0,1,1,1,1,1}, {1,0,1,0,0,0,0,0,1,1}, {1,0,1,1,1,0,0,1,1,1}, {1,1,0,0,1,1,0,0,0,1}, {1,0,1,1,0,0,1,1,0,1}, {1,1,1,1,1,1,1,1,1,1}}; int x; int y; }item;
    item move[4]={{0,1},{1,0},{0,-1},{-1,0}};
    typedef struct{ int x,y,d; }datatype;
    typedef struct{ datatype data[1000]; int top; }seqstack,*pseqstack;
    pseqstack init_seqstack() {
    } pseqstack p; p=(pseqstack)malloc(sizeof(seqstack)); if(p) p->top=-1; return p;
    int empty_seqstack(pseqstack p) {
    }
    int push_seqstack(pseqstack p,datatype x) {
    }
    int pop_seqstack(pseqstack p,datatype *x) { if(p->top==999) return 0; if(p->top==-1) return 1; else return 0; else {
    } p->top++; p->data[p->top]=x; return 1;
    } if(empty_seqstack(p)) return 0; else {
    } *x=p->data[p->top]; p->top--; return 1; void destroy_seqstack(pseqstack *p) {
    }
    int mazepath(int maze[][n+2],item move[],int x0,int y0) {
    pseqstack s; datatype temp; int x,y,d,i,j; if(*p) free(*p); *p=null; return;
    temp.x=x0; temp.y=y0; temp.d=-1; s=init_seqstack(); if(!s) {
    } push_seqstack(s,temp); while(!empty_seqstack(s)) {
    pop_seqstack(s,&temp); x=temp.x; y=temp.y; d=temp.d+1; while(d<4) {
    i=x+move[d]。x; j=y+move[d]。y; if(0==maze[i][j]) { temp.x=x; printf(“棧初始化失?。。。 保?; return 0;
    }
    }
    } temp.y=y; temp.d=d; push_seqstack(s,temp); x=i; y=j; maze[x][y]=-1; if(x==m&&y==n) {
    } else d=0; while(!empty_seqstack(s)) {
    } destroy_seqstack(&s); return 1; pop_seqstack(s,&temp); printf(“(%d,%d)<-”,temp.x,temp.y); else d++;
    } destroy_seqstack(&s); return 0; int main() {
    }
    五、運(yùn)行及調(diào)試分析 mazepath(maze,move,1,1); return 0;
    六、課程設(shè)計(jì)總結(jié)等
    在做實(shí)驗(yàn)前,一定要將課本上的知識(shí)吃透,因?yàn)檫@是做實(shí)驗(yàn)的基礎(chǔ),否則,在做設(shè)計(jì)程序?qū)嶒?yàn)時(shí),這將使你做的難度加大,浪費(fèi)寶貴的時(shí)間。使你事倍功半。做實(shí)驗(yàn)時(shí),一定要親力親為,務(wù)必要將每個(gè)步驟,每個(gè)細(xì)節(jié)弄清楚,弄明白,實(shí)驗(yàn)后,還要復(fù)習(xí),思考,這樣,你的印象才深刻,記得才牢固,否則,過(guò)后不久你就會(huì)忘得一干二凈,這還不如不做。通過(guò)這次程序設(shè)計(jì)的實(shí)驗(yàn),使我們學(xué)到了不少實(shí)用的知識(shí),更重要的是,做實(shí)驗(yàn)的過(guò)程,思考問(wèn)題的方法,這與做其他的實(shí)驗(yàn)是通用的,真正使我們們受益匪淺。
    大數(shù)相乘
    一、問(wèn)題描述
    本問(wèn)題中,要求輸入兩個(gè)相對(duì)較大的正整數(shù),能夠通過(guò)程序計(jì)算出其結(jié)果
    二、設(shè)計(jì)思路
    1、輸入階段采用一維數(shù)組a[],b[] 在輸入階段當(dāng)大數(shù)輸入時(shí),大數(shù)a,b從高位到低位分別依次存入數(shù)組a[ ],b[ ]。
    2、調(diào)用函數(shù)計(jì)算階段采用一維數(shù)組c[ ] 在計(jì)算過(guò)程中,由個(gè)位到高位依次計(jì)算各位的結(jié)果,并依次存入數(shù)組c[ ]中。
    三、數(shù)據(jù)結(jié)構(gòu)定義
    int x[n],y[n],z[n*n];
    四、程序清單 #include
    #include
    #define n 80 void mul(int *x,int *y,int *z) { int i,j; for(i=0;i<2*n;i++) z[i]=0; for(i=0;i
    五、運(yùn)行及調(diào)試分析
    六、課程設(shè)計(jì)總結(jié)。
    回顧起此次課程設(shè)計(jì),至今我仍感慨頗多,的確,從從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,可以學(xué)到很多很多的的東西,同時(shí)不僅可以鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。
    數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)心得體會(huì)200字篇三
    一,課程題目
    (算符優(yōu)先法計(jì)算算數(shù)表達(dá)式)以字符序列的形式從終端輸入語(yǔ)法正確的、不含變量的整數(shù)表達(dá)式。利用教材表3.1(p53)給出的算符優(yōu)先關(guān)系,實(shí)現(xiàn)對(duì)于算術(shù)四則混合運(yùn)算(加、減、乘、除)表達(dá)式的求值。例如:7+(4-2)*3+12/2=19。注:按照四舍五入的方式將四則運(yùn)算結(jié)果取整。
    二,程序設(shè)計(jì)思想
    在程序中分別設(shè)立一個(gè)運(yùn)算符棧(optr 棧),用于存儲(chǔ)‘+’,‘-’,‘*’,‘/’,‘#’(‘#’用于判斷算術(shù)表達(dá)式結(jié)束),和一個(gè)操作數(shù)棧(opnd 棧),用于存放整數(shù),輸入算式后,先將數(shù)字與運(yùn)算符分開(kāi)入i棧,若為數(shù)字則先用轉(zhuǎn)換函數(shù)將char類型的數(shù)轉(zhuǎn)換為int型并進(jìn)入操作數(shù)棧,若為運(yùn)算符則根據(jù)教材表3.1(p53)給出的算符優(yōu)先級(jí)關(guān)系,判斷棧頂運(yùn)算符和從鍵盤(pán)取得的運(yùn)算符作優(yōu)先級(jí)比較,若取得的運(yùn)算符優(yōu)先級(jí)高則進(jìn)棧,直到取得運(yùn)算符優(yōu)先級(jí)低的,則將操作數(shù)取出作operate運(yùn)算后存入棧頂,反復(fù)操作知道遇到‘#’,則結(jié)束運(yùn)算,輸出棧頂元素即為結(jié)果。 三,程序流程圖
    四,程序關(guān)鍵代碼設(shè)計(jì)
    本次程序設(shè)計(jì)共調(diào)用了12個(gè)方法分別是:
    initnumstack,parseint,pushnum,popnum ,initcalstack,popcal ,pushcal,in,gettopcal,gettopnum,preced,operate。 其中
    parseint方法
    int parseint(char c[]){ int number[5],i; for(i=0;i<5;i++){
    number[i]=(int)(c[i])-48; } i=10000*number[0]+1000*number[1]+100*number[2]+10 *number[3]+number[4]; return i; } 為將輸入的數(shù)字字符型轉(zhuǎn)換為整型的轉(zhuǎn)換函數(shù),通過(guò)ascall表的轉(zhuǎn)換關(guān)系,將輸入的字符型數(shù)字轉(zhuǎn)換為整型。在入棧前進(jìn)行此方法,以便整型數(shù)的計(jì)算。 preced,operate函數(shù)
    char preced(char a , char b){ char c[7]={+,-,*,/,(,),#}; char d[7][7]={ {>,>,<,<,,>}, {>,>,<,<,,>}, {>,>,>,>,,>}, {>,>,>,>,,>}, {<,<,<,<,,>,>,>, ,>,>}, {<,<,<,<,<, ,=}, }; int operate (int a,char theta,int b){ int c ; if (theta==+){
    c=a+b; return c; } if (theta==-){
    c=a-b; return c; } if (theta==*){
    c=a*b; return c; } if (theta==/){
    c=a/b; return c; } return 0; } 其中preced是判定運(yùn)算符棧的棧頂運(yùn)算符c1與讀入的運(yùn)算符c2之間優(yōu)先關(guān)系函數(shù);opearte為進(jìn)行二元運(yùn)算acb的函數(shù),如果是編譯表達(dá)式,則產(chǎn)生這個(gè)運(yùn)算的一組相應(yīng)的指令并返回存放結(jié)果的中間變量名;如果是解釋執(zhí)行表達(dá)式,則直接進(jìn)行該運(yùn)算,并返回運(yùn)算結(jié)果。 五,程序源代碼以及運(yùn)行結(jié)果
    #include
    #include #include
    typedef struct{ int *base; int *top; int stacksize; }sqlnum; void initnumstack(sqlnum &s){ =(int *)malloc(100*sizeof(int)); =; ize=100; } int parseint(char c[]){ int number[5],i; for(i=0;i<5;i++){
    number[i]=(int)(c[i])-48; } i=10000*number[0]+1000*number[1]+100*number[2]+10*number[3]+number[4]; return i; } void pushnum(sqlnum &s,int c){ *=c; ++; } int popnum(sqlnum &s){ int c; --; c=*; return c; } typedef struct{ char *base; char *top; int stacksize; }sqlcal; void initcalstack(sqlcal &s){ =(char *)malloc(100*sizeof(char)); =; ize=100; } void pushcal(sqlcal &s,char c){ *=c; ++; } char popcal(sqlcal &s){ char c; --; c=*; return c; }
    int in(char c,char s[]){ int i; for(i=0;i
    if(c==s[i])
    return 1;
    return 0; }
    char gettopcal(sqlcal &s){ char c; c=*(-1); return c; } int gettopnum(sqlnum &s){ int c; c=*(-1); return c; } char preced(char a , char b){ char c[7]={+,-,*,/,(,),#}; char d[7][7]={ {>,>,<,<,,>}, {>,>,<,<,,>}, {>,>,>,>,,>}, {>,>,>,>,,>}, {<,<,<,<,,>,>,>, ,>,>}, {<,<,<,<,<, ,=}, } w w ; if(a==+){
    if(b==+){
    return d[0][0];}
    if(b==-){
    return d[0][1];}
    if(b==*){
    return d[0][2];}
    if(b==/){
    return d[0][3];}
    if(b==(){
    return d[0][4];}
    if(b==)){
    return d[0][5];}
    if(b==#){
    return d[0][6];} } if(a==-){
    if(b==+){
    return d[1][0];}
    if(b==-){
    return d[1][1];}
    if(b==*){
    return d[1][2];}
    if(b==/){
    return d[1][3];}
    if(b==(){
    return d[1][4];}
    if(b==)){
    return d[1][5];}
    if(b==#){
    return d[1][6];} } if(a==*){
    if(b==+){
    return d[2][0];}
    if(b==-){
    return d[2][1];}
    if(b==*){
    return d[2][2];}
    if(b==/){
    return d[2][3];}
    if(b==(){
    return d[2][4];}
    if(b==)){
    return d[2][5];}
    if(b==#){
    return d[2][6];} } if(a==/){
    if(b==+){
    return d[3][0];}
    if(b==-){
    return d[3][1];}
    if(b==*){
    return d[3][2];}
    if(b==/){
    return d[3][3];}
    if(b==(){
    return d[3][4];}
    if(b==)){
    return d[3][5];}
    if(b==#){
    return d[3][6];} } if(a==(){
    if(b==+){
    return d[4][0];}
    if(b==-){
    return d[4][1];}
    if(b==*){
    return d[4][2];}
    if(b==/){
    return d[4][3];}
    if(b==(){
    return d[4][4];}
    if(b==)){
    return d[4][5];}
    if(b==#){
    return d[4][6];} } if(a==)){
    if(b==+){
    return d[5][0];}
    if(b==-){
    return d[5][1];}
    if(b==*){
    return d[5][2];}
    if(b==/){
    return d[5][3];}
    if(b==(){
    return d[5][4];}
    if(b==)){
    return d[5][5];}
    if(b==#){
    return d[5][6];} } if(a==#){
    if(b==+){
    return d[6][0];}
    if(b==-){
    return d[6][1];}
    if(b==*){
    return d[6][2];}
    if(b==/){
    return d[6][3];}
    if(b==(){
    return d[6][4];}
    if(b==)){
    return d[6][5];}
    if(b==#){
    return d[6][6];} } return 0; } int operate (int a,char theta,int b){ int c ; if (theta==+){
    c=a+b; return c; } if (theta==-){
    c=a-b; return c; } if (theta==*){
    c=a*b; return c; } if (theta==/){
    c=a/b; return c; } return 0; } void main(){ sqlcal optr; sqlnum opnd; char c,d[5]={0,0,0,0,0}; int f=0; char op[]={+,-,*,/,(,),#}; initcalstack(optr); initnumstack(opnd); printf(“請(qǐng)輸入算式并在尾部添加一個(gè)#號(hào)n”); c=getchar(); pushcal(optr,#); while(c!=#||gettopcal(optr)!=#) { if (!in(c,op))
    {
    d[0]=d[1];
    d[1]=d[2];
    d[2]=d[3];
    d[3]=d[4];
    d[4]=c;
    c=getchar(); f=1;
    }
    else
    {
    if(f==1){
    pushnum(opnd,parseint(d));
    d[0]=0;d[1]=0;d[2]=0;d[3]=0;d[4]=0;
    f=0;
    }
    switch(preced(gettopcal(optr),c))
    {
    case<:
    pushcal(optr,c);
    c=getchar();
    break;
    case=:
    popcal(optr);
    c=getchar();
    break;
    case>:
    char theta;int a;int b;
    theta=popcal(optr);
    b=popnum(opnd);
    a=popnum(opnd);
    pushnum(opnd,operate(a,theta,b));
    break;
    }
    } } printf(“%dn”,gettopnum(opnd)); }
    程序運(yùn)行結(jié)果: 六,心得體會(huì)
    通過(guò)這次編程,我發(fā)現(xiàn)很多編程過(guò)程中的不足與問(wèn)題,很多問(wèn)題由于考慮不全面,導(dǎo)致程序運(yùn)行失敗。還有一些小問(wèn)題,比如字母的大小寫(xiě),括號(hào)的遺漏,語(yǔ)法書(shū)寫(xiě)錯(cuò)誤等等一些基礎(chǔ)錯(cuò)誤,也是讓我體會(huì)很深寫(xiě)程序要謹(jǐn)慎仔細(xì)。