大學生數據結構心得體會
在不斷發展的社會中,當我們對人生或者事物有了新的感悟時,寫心得體會是不錯的選擇,這樣既可以鞏固所學,還方便今后回顧。下面是小編整理的大學生數據結構心得體會,僅供參考,希望對你有所幫助。
大學生數據結構心得體會精選篇1
數據庫課程設計大賽的塵囂漸漸遠去,懷著對這次大賽的些許不舍,懷著對當初課程設計開始時候的豪情萬丈的決心的留戀,懷著通過這次課程設計積累的信心與斗志,我開始寫這篇文章,為自己的足跡留下哪怕是微不足道但是對自己彌足珍貴的痕跡并期望與大家共勉。
首先,讓我的記憶追溯到大二暑假,在老大的指引下(老大勸我學asp。net),我接觸到Microsoft公司的。NET產品。那個時候我已經學過vc和asp,因為windows程序設計實驗的課的關系,接觸過vb,但是沒有專門去學他,因為習慣了c++里面的class,int,覺得vb的sub,var看著就不是很順心。
我是一個好奇心很強的人,突然看到了一個號稱“。net是用于創建下一代應用程序的理想而又現實的開發工具”,而且主推c#語言,由于對c語言的一貫好感,我幾乎是立刻對他產生了興趣。我就開始了對c#的學習,任何語言都不是孤立存在的,所以數據交互是很重要的,暑假的時候我把我們這學期的課本數據庫系統概論
大學生數據結構心得體會精選篇2
這學期開始兩周時間是我們自己選題上機的時間,這學期開始兩周時間是我們自己選題上機的時間,雖然上機時間只有短短兩個星期但從中確實學到了不少知識。上機時間只有短短兩個星期但從中確實學到了不少知識。數據結構可以說是計算機里一門基礎課程,據結構可以說是計算機里一門基礎課程,但我覺得我們一低計算機里一門基礎課程定要把基礎學扎實,定要把基礎學扎實,然而這次短短的上機幫我又重新鞏固了C語言知識,讓我的水平又一部的提高。數據結構這是一門語言知識讓我的水平又一部的提高。
數據結構這是一門知識,純屬于設計的科目,它需用把理論變為上機調試。純屬于設計的科目,它需用把理論變為上機調試。它對我們來說具有一定的難度。它是其它編程語言的一門基本學科。來說具有一定的難度。它是其它編程語言的一門基本學科。我選的上機題目是交叉合并兩個鏈表,對這個題目,我選的.上機題目是交叉合并兩個鏈表,對這個題目,我覺得很基礎。剛開始調試代碼的時候有時就是一個很小的錯覺得很基礎。剛開始調試代碼的時候有時就是一個很小的錯調試代碼的時候誤,導致整個程序不能運行,然而開始的我還沒從暑假的狀導致整個程序不能運行,態轉到學習上,每當程序錯誤時我都非常焦躁,態轉到學習上,每當程序錯誤時我都非常焦躁,甚至想到了放棄,但我最終找到了狀態,一步一步慢慢來,放棄,但我最終找到了狀態,一步一步慢慢來,經過無數次的檢查程序錯誤的原因后慢慢懂得了耐心是一個人成功的必然具備的條件!同時,通過此次課程設計使我了解到,必然具備的條件!同時,通過此次課程設計使我了解到,硬件語言必不可缺少,要想成為一個有能力的人,必須懂得件語言必不可缺少,要想成為一個有能力的人,硬件基礎語言。在這次課程設計中,硬件基礎語言。在這次課程設計中,雖然不會成功的編寫一個完整的程序,但是在看程序的過程中,個完整的程序,但是在看程序的過程中,不斷的上網查資料以及翻閱相關書籍,通過不斷的模索,測試,發現問題,以及翻閱相關書籍,通過不斷的模索,測試,發現問題,解決問題和在老師的幫助下一步一步慢慢的正確運行程序,決問題和在老師的幫助下一步一步慢慢的正確運行程序,終于完成了這次課程設計,于完成了這次課程設計。
大學生數據結構心得體會精選篇3
本次課程設計所用到的知識完全是上學期的知識,通過這次課程設計,我認識到了我對數據結構這門課的掌握程度。
首先我這個課程設計是關于二叉樹的,由于是剛接觸二叉樹,所以我掌握的長度并不深。在編程之前我把有關于二叉樹的知識有溫習了一遍,還好并沒有忘掉。二叉樹這章節難度中上等,而且內容廣泛,所以我只掌握了百分之六七十。
然后,在編程中我認識到了自己動手能力的不足,雖然相比較大二而言進步很大,但是我還是不滿意,有的在編程中必須看書才能寫出來,有的靠百度,很少是自己寫的。還好,我自己組裝程序的能力還行,要不這東拼西湊的程序根本組裝不了。在編程中我還認識到了,編程不能停下,如果編程的時間少了,知識忘的會很快,而且動手也會很慢。同時,同學之間的合作也很重要,每個人掌握的知識都不一樣,而且掌握程度也不一樣,你不會的別的同學會,所以在大家的共同努力下,編程會變得很容易。在這次編程中,我了解到了自己某些方面的不足,比如說鏈表的知識,雖然我能做一些有關于鏈表的編程,但是很慢,沒有別人編程的快,另外,二叉樹和圖的知識最不好掌握,這方面的知識廣泛而復雜。以前,沒動手編程的時候覺得這些知識很容易,現在編程了才發現自己錯了,大錯特錯了,我們這個專業最重視的就是動手編程能力,如果我們紙上寫作能力很強而動手編程能力很差,那我們就白上這個專業了。計算機這個專業就是鍛煉動手編程能力的,一個人的理論知識再好,沒有動手編程能力,那他只是一個計算機專業的“入門者”。在編程中我們能找到滿足,如果我們自己編程了一個程序,我們會感到自豪,而且充實,因為如果我們專研一個難得程序,我們會達到忘我的境界,自己完全沉浸在編程的那種樂趣之中,完全會廢寢忘食。編程雖然會乏味很無聊,但是只要我們沉浸其中,你就會發現里面的樂趣,遇到難得,你會勇往直前,不寫出來永不罷休;遇到容易的,你會找到樂趣。編程是很乏味,但是那是因為你沒找到編程重的樂趣,你只看到了他的不好,而沒有看到他的好。其實,只要你找到編程中得樂趣,你就會完全喜歡上他,不編程還好,一編程你就會變成一個兩耳不聞窗外事的“植物人”。可以說只要你涉及到了計算機,你就的會編程,而且還要喜歡上他,永遠和他打交道,我相信在某一天,我們一定會把他當作我們不可或缺的好朋友。
最后我要談的是長時間編程的好處,俗話說“熟能生巧”,確實是這樣。如果我們長時間不編程,在一接觸他,我們會感到很陌生。有規律的編程會提高我們的動手能力,我們的思維,也會讓我們變得很細心。在一個幾千行的程序中,我們都能找到錯誤,那我們還會怕其他的錯誤嗎?可以說編程是我們在我們這一行業的一把利劍,如果我們能很好的利用它,我們就會成為這個行業的真正成功者。也許你會說就算變成好了也不一定成功,是的,但是你不會編程就一定不會成功。如果,我們想成為這個專業的成功者,我們就得愛上編程,不管他是怎么得乏味,怎么得無聊,我們都不能丟掉他。
總之,動手編程就是鍛煉我們的動手能力,當然這個動手能力并不是科研上的動手能力,而是我們的動手編程能力,記住,只要你真正的喜歡上他,你就會發現其中的樂趣,我相信,只要你堅持下去,你一定會喜歡上他,把編程當作自己日常生活中一件必須做的事情。
大學生數據結構心得體會精選篇4
完成了這次的二元多項式加減運算問題的課程設計后,我的心得體會很多,細細梳理一下,有以下幾點:
1、程序的編寫中的語法錯誤及修改
因為我在解決二元多項式問題中,使用了鏈表的方式建立的二元多項式,所以程序的空間是動態的生成的,而且鏈表可以靈活地添加或刪除結點,所以使得程序得到簡化。但是出現的語法問題主要在于子函數和變量的定義,降序排序,關鍵字和函數名稱的書寫,以及一些庫函數的規范使用,這些問題均可以根據編譯器的警告提示,對應的將其解決。
2、程序的設計中的邏輯問題及其調整
我在設計程序的過程中遇到許多問題,首先在選擇數據結構的時候選擇了鏈表,但是鏈表的排序比較困難,特別是在多關鍵字的情況下,在一種關鍵字確定了順序以后,在第一關鍵字相同的時候,按某種順序對第二關鍵字進行排序。在此程序中共涉及到3個量數,即:系數,x的指數和y的指數,而關鍵字排是按x的指數和y的指數來看,由于要求是降冪排序且含有2個關鍵字,所以我先選擇x的指數作為第一關鍵字,先按x的降序來排序,當x的指數相同時,再以y為關鍵字,按照y的指數大小來進行降序排列。
另外,我在加法函數的編寫過程中也遇到了大量的問題,由于要同時比較多個關鍵字,而且設計中涉及了數組和鏈表的綜合運用,導致反復修改了很長的時間才完成了一個加法的設計。但是,現在仍然有一個問題存在:若以0為系數的項是首項則顯示含有此項,但是運算后則自動消除此項,這樣是正確的。但是當其不是首項的時候,加法函數在顯示的時候有0為系數的項時,0前邊不顯示符號,當然,這樣也可以理解成當系數為0時,忽略這一項。這也是本程序中一個不完美的地方。
我在設計減法函數的時候由于考慮不夠充分就直接編寫程序,走了很多彎路,不得不停下來仔細研究算法,后來發現由于前邊的加法函數完全適用于減法,只不過是將二元多項式B的所有項取負再用加法函數即可,可見算法的重要性不低于程序本身。
3、程序的調試中的經驗及體會
我在調試過程中,發生了許多小細節上的問題,它們提醒了自己在以后編程的時候要注意細節,即使是一個括號的遺漏或者一個字符的誤寫都會造成大量的錯誤,浪費許多時間去尋找并修改,總結的教訓就是寫程序的時候,一定要仔細、認真、專注。
我還有一個很深的體會就是格式和注釋,由于平時不注意格式和注釋這方面的要求,導致有的時候在檢查和調試的時候很不方便。有的時候甚至剛剛完成一部分的編輯,結果一不注意,就忘記了這一部分程序的功能。修改的時候也有不小心誤刪的情況出現。如果注意格式風格,并且養成隨手加注釋的習慣,就能減少這些不必要的反復和波折。還有一點,就是在修改的時候,要注意修改前后的不同點在哪里,改后調試結果要在原有的基礎上更加精確。
大學生數據結構心得體會精選篇5
一.實驗內容:
實現哈夫曼編碼的生成算法。
二.實驗目的:
1、使學生熟練掌握哈夫曼樹的生成算法。
2、熟練掌握哈夫曼編碼的方法。
三.問題描述:
已知n個字符在原文中出現的頻率,求它們的哈夫曼編碼。
1、讀入n個字符,以及字符的權值,試建立一棵Huffman樹。
2、根據生成的Huffman樹,求每個字符的Huffman編碼。并對給定的待編碼字符序列進行編碼,并輸出。
四.問題的實現
(1)郝夫曼樹的存儲表示
typedef struct{
unsigned int weight;
unsigned int parent,lchild,rchild;
}HTNode,__HuffmanTree; //動態分配數組存儲郝夫曼樹
郝夫曼編碼的存儲表示
typedef char__ __HuffmanCode;//動態分配數組存儲郝夫曼編碼
(2)主要的實現思路:
a.首先定義郝夫曼樹的存儲形式,這里使用了數組
b.用select遍歷n個字符,找出權值最小的兩個
c.構造郝夫曼樹HT,并求出n個字符的郝夫曼編碼HC
總結
1.基本上沒有什么太大的問題,在調用select這個函數時,想把權值最小的兩個結點的序號帶回HuffmanCoding,所以把那2個序號設置成了引用。
2.在編程過程中,在什么時候分配內存,什么時候初始化花的時間比較長
3.最后基本上實現后,發現結果仍然存在問題,經過分步調試,發現了特別低級的輸入錯誤。把HT[i].weight=HT[s1].weight+HT[s2].weight;中的s2寫成了i
附:
//動態分配數組存儲郝夫曼樹
typedef struct{
int weight; //字符的權值
int parent,lchild,rchild;
}HTNode,__HuffmanTree;
//動態分配數組存儲郝夫曼編碼
typedef char__ __HuffmanCode;
//選擇n個(這里是k=n)節點中權值最小的兩個結點
void Select(HuffmanTree &HT,int k,int &s1,int &s2)
{ int i;
i=1;
while(i<=k && HT[i].parent!=0)i++;
//下面選出權值最小的結點,用s1指向其序號
s1=i;
for(i=1;i<=k;i++)
{
if(HT[i].parent==0&&HT[i].weight
}
//下面選出權值次小的結點,用s2指向其序號
for(i=1;i<=k;i++)
{
if(HT[i].parent==0&&i!=s1)break;
}
s2=i;
for(i=1;i<=k;i++)
{
if(HT[i].parent==0&&i!=s1&&HT[i].weight
}
}
//構造Huffman樹,求出n個字符的編碼
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int __w,int n)
{
int m,c,f,s1,s2,i,start;
char __cd;
if(n<=1)return;
m=2__n-1; //n個葉子n-1個結點
HT=(HuffmanTree)malloc((m+1)__sizeof(HTNode)); //0號單元未用,預分配m+1個單元
HuffmanTree p=HT+1;
w++; //w的號單元也沒有值,所以從號單元開始
for(i=1;i<=n;i++,p++,w++)
{
p->weight=__w;
p->parent=p->rchild=p->lchild=0;
}
for(;i<=m;++i,++p)
{
p->weight=p->parent=p->rchild=p->lchild=0;
}
for(i=n+1;i<=m;i++)
{
Select(HT,i-1,s1,s2); //選出當前權值最小的
HT[s1].parent=i;
HT[s2].parent=i;
HT[i].lchild=s1;
HT[i].rchild=s2;
HT[i].weight=HT[s1].weight+HT[s2].weight;
}
//從葉子到根逆向求每個字符的郝夫曼編碼
HC=(HuffmanCode)malloc((n+1)__sizeof(char__)); //分配n個字符編碼的頭指針變量
cd=(char__)malloc(n__sizeof(char)); //分配求編碼的工作空間
cd[n-1]='\0';//編碼結束符
for(i=1;i<=n;i++) //逐個字符求郝夫曼編碼
{
start=n-1; //編碼結束符位置
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) //從葉子到根逆向求編碼
{
if(HT[f].lchild==c)cd[--start]='0';
else
cd[--start]='1';
}
HC[i]=(char__)malloc((n-start)__sizeof(char)); //為第i個字符編碼分配空間
strcpy(HC[i],&cd[start]);//從cd復制編碼到HC
}
free(cd); //釋放工作空間
}
void main
{ int n,i;
int__ w; //記錄權值
char__ ch; //記錄字符
HuffmanTree HT;
HuffmanCode HC;
cout<<“請輸入待編碼的字符個數n=”;
cin>>n;
w=(int__)malloc((n+1)__sizeof(int)); //記錄權值,號單元未用
ch=(char__)malloc((n+1)__sizeof(char));//記錄字符,號單元未用
cout<<“依次輸入待編碼的字符data及其權值weight”<
for(i=1;i<=n;i++)
{
cout<<“data[”<
}