第一篇:北京科技大學數據結構試驗報告(附錄含代碼)
一、1)功能描述
輸入數據(設為整型)建立單鏈表,并求相鄰兩節點data值之和為最大的第一節點。2)詳細設計
遵循鏈表建立的基本思想,建立一個新的鏈表,H為表頭,r為新節點,p為表尾節點指針,沒存入一個新的數據則申請一個新的節點,知道沒有數據輸入,利用循環和打擂臺法,比較和的大小,并輸出。3)測試分析
程序調試完成后,選取兩組數據進行測試,都得出了正確結果(數據以0為結束符,若有相同和,則取第一組)結果截圖
4)心得體會
通過做第一題,學習到鏈表的建立以及鏈表里指針的使用,并且復習了比較法里面的打擂臺法。
二、1)功能描述
實現算術表達式求值程序(棧的運用),輸入中綴表達式,可將其轉換成后綴表達式 2)詳細設計
本題目的程序是根據課本上的程序改進之后得出的,課本上有完整的程序,但是有bug,按照課本上的程序,結果會出現“燙燙燙燙燙”,原因是對于優先級的比較沒有處理好,因此加了兩行代碼,將優先級的比較處理好,即現在的程序。3)測試分析
程序調試完成后,選取題目所給的式子進行測試,得出了正確后綴表達式結果 結果截圖
4)心得體會
通過做第二題,對于課本上的知識表示得出“實踐出真知”的真理,即使書上的東西也不一定就是正確的,尤其是代碼,最好是個人自己真正實踐一下。
三、1)功能描述
實現鏈式隊列運算程序(隊列的運用)2)詳細設計
本題目是隊列相關應用,隊列和棧是相反的,隊列是先進的先出,因此輸入12345,先出的是1,本著隊列的這一特性,根據課本所學的隊列的算法,設計了如下程序。3)測試分析
程序調試完成后,選取12345進行測試,后綴加0,則一個字符出隊,只輸入0,則繼續出隊,輸入@,則打印剩余全部元素。結果截圖
4)心得體會
通過做第三題,對于隊列的特點有了更加深刻的認識,尤其區分隊列與棧的不同點,需要特別注意。
四、1)功能描述
①構造關于F的Huffman樹;
②求出并打印D總各字符的Huffman編碼。2)詳細設計
本題目是Huffman樹的應用以及Huffman編碼的應用,參照課本上關于Huffman樹的建立以及Huffman編碼的應用的實現,將所給數據依權值最小原則建立Huffman樹,并實現Huffman編碼。3)測試分析
程序調試完成后,給出數據abcdefgh,相應頻率為12345678,運行代碼得出結果如圖。同時選取另一組數據測試也得出了正確結論
結果截圖
4)心得體會
通過做第四題,對于Huffman樹有了更加深刻的體會,同時練習也使得對課本知識進行實踐,有助于更好的理解Huffman樹的算法。
五、1)功能描述
設英文句子:“everyone round you can hear you when you speak.”(1)依次讀入句中各單詞,構造一棵二叉排序樹;(2)按LDR遍歷此二叉排序樹。
LDR: can everyone hear round speak when you(有序)
2)詳細設計
本題目是有關二叉樹的建立和中序遍歷的,二叉樹作為數據存儲一個很重要的結構,它的建立也是很重要的。本題目代碼設計上采用課本上的對于二叉樹建立的方法,將所給單詞以二叉樹形式建立并存儲,然后中序遍歷的到字典順序。3)測試分析
程序調試完成后,給出單詞串everyone round you can hear you when you speak,運行代碼得出中序遍歷結果如圖。結果截圖
4)心得體會
通過做第五題,練習運用二叉樹模型解決了一些實際問題如現實中字典的編排問題,在熟悉算法的基礎上,同時得出結論,好的算法可以應用與實際生活生產,使之更為便捷。
附錄 程序代碼 實驗一:
#include“stdio.h” #include“malloc.h” typedef struct node {
int data;
struct node *next;}list,*List;List Creatlist()
//建立鏈表函數 { List H,p,r;
//H為表頭,r為新節點,p為表尾節點指針
H=(List)malloc(sizeof(list));
//建立頭節點
r=H;
p=(List)malloc(sizeof(list));
//申請新節點
while(scanf(“%d”,p)&&p->data!=0)//輸入數據,直到為零(結束標志)
{
r->next=p;//新節點鏈入表尾
r=p;
p=(List)malloc(sizeof(list));
} r->next=NULL;//將尾節點的指針域置空
return H;
//返回已創建的頭節點 } List Adjmax(List H)//比較相鄰兩數之和
{
//返回相鄰兩數之和最大的第一個數指針
List p,r,q;int sum=0;p=H->next;if(H->next ==NULL)//判斷是否為空
{
printf(“Empty List!”);
q=(List)malloc(sizeof(list));
q->data =0;}
while(p!=NULL)//比較相鄰兩數之和
{
r=p->next;
if(p&&r)
if(r->data+p->data>sum)
{
q=p;
sum=r->data +p->data;}//不斷賦給sum新的最大值
else;
p=p->next;} return q;} int main(){ char ch;printf(“/// 請輸入整形數據,以空格隔開,0結束。/// n”);printf(“Ready? nY/N(enter 'y' or 'Y' to continue)n”);while(scanf(“%c”,&ch)&&(ch=='Y'||ch=='y'))
{
List H,pmax;
H=Creatlist();
pmax=Adjmax(H);
printf(“相鄰兩數之和最大的第一個數為:%dnContinue?
Y/N
free(H);
scanf(”%c“,&ch);} return 0;}
”,pmax->data);實驗二:
#include
struct node *next;//后繼指針 }snode,*slink;int Emptystack(slink S)//檢測棧空 { if(S==NULL)return(1);else return(0);} char Pop(slink*top)//出棧 { char e;slink p;if(Emptystack(*top))return(-1);//棧空返回
else {
e=(*top)->data;//取棧頂元素
p=*top;*top=(*top)->next;//重置棧頂指針
free(p);return(e);} } void Push(slink*top,char e)//進棧 { slink p;p=(slink)malloc(sizeof(snode));//生成進棧p節點
p->data=e;//存入元素e p->next=*top;//p節點作為新的棧頂鏈入
*top=p;} void Clearstack(slink*top)//置空棧 { slink p;while(*top!=NULL){
p=(*top)->next;
Pop(top);//依次彈出節點直到棧空
*top=p;} *top=NULL;} char Getstop(slink S)//取棧頂 { if(S!=NULL)return(S->data);return(0);} //符號優先級比較
int Precede(char x,char y)//比較x是否“大于”y { switch(x){
case '(':x=0;break;case '+': case '-':x=1;break;case '*': case '/':x=2;break;default: x=-1;} switch(y){ case '+': case '-':y=1;break;case '*': case '/':y=2;break;case '(':y=3;break;default: y=100;} if(x>=y)return(1);else return(0);} //中后序轉換
void mid_post(char post[],char mid[])//中綴表達式mid到后綴表達式post的轉換的算法 { int i=0,j=0;char x;
slink S=NULL;//置空棧 Push(&S,'#');//結束符入棧 do { x=mid[i++];//掃描當前表達式分量x switch(x){ case '#':
{ while(!Emptystack(S))
post[j++]=Pop(&S);
}
}break;case ')':
{ while(Getstop(S)!='(')
post[j++]=Pop(&S);//反復出棧直至遇到'('
Pop(&S);//退掉'('
}break;case '+': case '-': case '*': case '/': case '(':
{ while(Precede(Getstop(S),x))//棧頂運算符(Q1)與x比較
post[j++]=Pop(&S);//Q1>=x時,輸出棧頂符并退棧
Push(&S,x);//Q1 }break;default:post[j++]=x;//操作數直接輸出 } }while(x!='#');post[j]='
主站蜘蛛池模板:
女人和拘做爰正片视频|
天天做天天爱天天做天天吃中|
午夜精品久久久久久不卡|
好大好硬好爽免费视频|
天天做天天爱夜夜爽女人爽|
国产精品久久久久久成人影院|
一本久道综合在线无码人妻|
无码成人片在线播放|
亚洲色www成人永久网址|
亚洲精品国产摄像头|
欧美日韩人成视频在线播放|
乱人伦视频中文字幕|
被窝影院午夜无码国产|
换脸国产av一区二区三区|
国产精品久久久久久久久鸭无码|
麻花传媒在线mv免费观看视频|
大片视频免费观看视频|
欧美人与动人物牲交免费观看久久|
亚洲精品自在在线观看|
久久久亚洲综合久久久久87|
国产suv精品一区二人妻|
久久久久99精品国产片|
国产熟妇搡bbbb搡bbbb搡|
色婷婷亚洲十月十月色天|
亚洲av福利天堂一区二区三|
精品人妻伦九区久久aaa片69|
亚洲欧洲成人av每日更新|
亚洲爆乳成av人在线视水卜|
国产精品国产三级国产专播|
小13箩利洗澡无码视频免费网站|
免费精品国产自产拍在线观看|
欧洲精品无码一区二区三区在线播放|
人妻免费一区二区三区最新|
超碰国产天天做天天爽|
日韩精品亚洲专在线电影|
无码尹人久久相蕉无码|
国产在线精品一区二区不卡顿|
特黄aaaaaaaaa毛片免费视频|
国产特黄级aaaaa片免|
日本人妻巨大乳挤奶水|
亚洲人成无码网www|