欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      北京科技大學(xué)數(shù)據(jù)結(jié)構(gòu)試驗(yàn)報(bào)告(附錄含代碼)

      時(shí)間:2019-05-12 08:38:56下載本文作者:會(huì)員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《北京科技大學(xué)數(shù)據(jù)結(jié)構(gòu)試驗(yàn)報(bào)告(附錄含代碼)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《北京科技大學(xué)數(shù)據(jù)結(jié)構(gòu)試驗(yàn)報(bào)告(附錄含代碼)》。

      第一篇:北京科技大學(xué)數(shù)據(jù)結(jié)構(gòu)試驗(yàn)報(bào)告(附錄含代碼)

      一、1)功能描述

      輸入數(shù)據(jù)(設(shè)為整型)建立單鏈表,并求相鄰兩節(jié)點(diǎn)data值之和為最大的第一節(jié)點(diǎn)。2)詳細(xì)設(shè)計(jì)

      遵循鏈表建立的基本思想,建立一個(gè)新的鏈表,H為表頭,r為新節(jié)點(diǎn),p為表尾節(jié)點(diǎn)指針,沒存入一個(gè)新的數(shù)據(jù)則申請一個(gè)新的節(jié)點(diǎn),知道沒有數(shù)據(jù)輸入,利用循環(huán)和打擂臺(tái)法,比較和的大小,并輸出。3)測試分析

      程序調(diào)試完成后,選取兩組數(shù)據(jù)進(jìn)行測試,都得出了正確結(jié)果(數(shù)據(jù)以0為結(jié)束符,若有相同和,則取第一組)結(jié)果截圖

      4)心得體會(huì)

      通過做第一題,學(xué)習(xí)到鏈表的建立以及鏈表里指針的使用,并且復(fù)習(xí)了比較法里面的打擂臺(tái)法。

      二、1)功能描述

      實(shí)現(xiàn)算術(shù)表達(dá)式求值程序(棧的運(yùn)用),輸入中綴表達(dá)式,可將其轉(zhuǎn)換成后綴表達(dá)式 2)詳細(xì)設(shè)計(jì)

      本題目的程序是根據(jù)課本上的程序改進(jìn)之后得出的,課本上有完整的程序,但是有bug,按照課本上的程序,結(jié)果會(huì)出現(xiàn)“燙燙燙燙燙”,原因是對于優(yōu)先級的比較沒有處理好,因此加了兩行代碼,將優(yōu)先級的比較處理好,即現(xiàn)在的程序。3)測試分析

      程序調(diào)試完成后,選取題目所給的式子進(jìn)行測試,得出了正確后綴表達(dá)式結(jié)果 結(jié)果截圖

      4)心得體會(huì)

      通過做第二題,對于課本上的知識表示得出“實(shí)踐出真知”的真理,即使書上的東西也不一定就是正確的,尤其是代碼,最好是個(gè)人自己真正實(shí)踐一下。

      三、1)功能描述

      實(shí)現(xiàn)鏈?zhǔn)疥?duì)列運(yùn)算程序(隊(duì)列的運(yùn)用)2)詳細(xì)設(shè)計(jì)

      本題目是隊(duì)列相關(guān)應(yīng)用,隊(duì)列和棧是相反的,隊(duì)列是先進(jìn)的先出,因此輸入12345,先出的是1,本著隊(duì)列的這一特性,根據(jù)課本所學(xué)的隊(duì)列的算法,設(shè)計(jì)了如下程序。3)測試分析

      程序調(diào)試完成后,選取12345進(jìn)行測試,后綴加0,則一個(gè)字符出隊(duì),只輸入0,則繼續(xù)出隊(duì),輸入@,則打印剩余全部元素。結(jié)果截圖

      4)心得體會(huì)

      通過做第三題,對于隊(duì)列的特點(diǎn)有了更加深刻的認(rèn)識,尤其區(qū)分隊(duì)列與棧的不同點(diǎn),需要特別注意。

      四、1)功能描述

      ①構(gòu)造關(guān)于F的Huffman樹;

      ②求出并打印D總各字符的Huffman編碼。2)詳細(xì)設(shè)計(jì)

      本題目是Huffman樹的應(yīng)用以及Huffman編碼的應(yīng)用,參照課本上關(guān)于Huffman樹的建立以及Huffman編碼的應(yīng)用的實(shí)現(xiàn),將所給數(shù)據(jù)依權(quán)值最小原則建立Huffman樹,并實(shí)現(xiàn)Huffman編碼。3)測試分析

      程序調(diào)試完成后,給出數(shù)據(jù)abcdefgh,相應(yīng)頻率為12345678,運(yùn)行代碼得出結(jié)果如圖。同時(shí)選取另一組數(shù)據(jù)測試也得出了正確結(jié)論

      結(jié)果截圖

      4)心得體會(huì)

      通過做第四題,對于Huffman樹有了更加深刻的體會(huì),同時(shí)練習(xí)也使得對課本知識進(jìn)行實(shí)踐,有助于更好的理解Huffman樹的算法。

      五、1)功能描述

      設(shè)英文句子:“everyone round you can hear you when you speak.”(1)依次讀入句中各單詞,構(gòu)造一棵二叉排序樹;(2)按LDR遍歷此二叉排序樹。

      LDR: can everyone hear round speak when you(有序)

      2)詳細(xì)設(shè)計(jì)

      本題目是有關(guān)二叉樹的建立和中序遍歷的,二叉樹作為數(shù)據(jù)存儲(chǔ)一個(gè)很重要的結(jié)構(gòu),它的建立也是很重要的。本題目代碼設(shè)計(jì)上采用課本上的對于二叉樹建立的方法,將所給單詞以二叉樹形式建立并存儲(chǔ),然后中序遍歷的到字典順序。3)測試分析

      程序調(diào)試完成后,給出單詞串everyone round you can hear you when you speak,運(yùn)行代碼得出中序遍歷結(jié)果如圖。結(jié)果截圖

      4)心得體會(huì)

      通過做第五題,練習(xí)運(yùn)用二叉樹模型解決了一些實(shí)際問題如現(xiàn)實(shí)中字典的編排問題,在熟悉算法的基礎(chǔ)上,同時(shí)得出結(jié)論,好的算法可以應(yīng)用與實(shí)際生活生產(chǎn),使之更為便捷。

      附錄 程序代碼 實(shí)驗(yàn)一:

      #include“stdio.h” #include“malloc.h” typedef struct node {

      int data;

      struct node *next;}list,*List;List Creatlist()

      //建立鏈表函數(shù) { List H,p,r;

      //H為表頭,r為新節(jié)點(diǎn),p為表尾節(jié)點(diǎn)指針

      H=(List)malloc(sizeof(list));

      //建立頭節(jié)點(diǎn)

      r=H;

      p=(List)malloc(sizeof(list));

      //申請新節(jié)點(diǎn)

      while(scanf(“%d”,p)&&p->data!=0)//輸入數(shù)據(jù),直到為零(結(jié)束標(biāo)志)

      {

      r->next=p;//新節(jié)點(diǎn)鏈入表尾

      r=p;

      p=(List)malloc(sizeof(list));

      } r->next=NULL;//將尾節(jié)點(diǎn)的指針域置空

      return H;

      //返回已創(chuàng)建的頭節(jié)點(diǎn) } List Adjmax(List H)//比較相鄰兩數(shù)之和

      {

      //返回相鄰兩數(shù)之和最大的第一個(gè)數(shù)指針

      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)//比較相鄰兩數(shù)之和

      {

      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(“/// 請輸入整形數(shù)據(jù),以空格隔開,0結(jié)束。/// 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(“相鄰兩數(shù)之和最大的第一個(gè)數(shù)為:%dnContinue?

      Y/N

      free(H);

      scanf(”%c“,&ch);} return 0;}

      ”,pmax->data);實(shí)驗(yàn)二:

      #include #include #include typedef struct node //棧節(jié)點(diǎn)類型 { char data;//存儲(chǔ)一個(gè)棧元素

      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);//??辗祷?/p>

      else {

      e=(*top)->data;//取棧頂元素

      p=*top;*top=(*top)->next;//重置棧頂指針

      free(p);return(e);} } void Push(slink*top,char e)//進(jìn)棧 { slink p;p=(slink)malloc(sizeof(snode));//生成進(jìn)棧p節(jié)點(diǎn)

      p->data=e;//存入元素e p->next=*top;//p節(jié)點(diǎn)作為新的棧頂鏈入

      *top=p;} void Clearstack(slink*top)//置空棧 { slink p;while(*top!=NULL){

      p=(*top)->next;

      Pop(top);//依次彈出節(jié)點(diǎn)直到???/p>

      *top=p;} *top=NULL;} char Getstop(slink S)//取棧頂 { if(S!=NULL)return(S->data);return(0);} //符號優(yōu)先級比較

      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);} //中后序轉(zhuǎn)換

      void mid_post(char post[],char mid[])//中綴表達(dá)式mid到后綴表達(dá)式post的轉(zhuǎn)換的算法 { int i=0,j=0;char x;

      slink S=NULL;//置空棧 Push(&S,'#');//結(jié)束符入棧 do { x=mid[i++];//掃描當(dāng)前表達(dá)式分量x switch(x){ case '#':

      { while(!Emptystack(S))

      post[j++]=Pop(&S);

      }

      }break;case ')':

      { while(Getstop(S)!='(')

      post[j++]=Pop(&S);//反復(fù)出棧直至遇到'('

      Pop(&S);//退掉'('

      }break;case '+': case '-': case '*': case '/': case '(':

      { while(Precede(Getstop(S),x))//棧頂運(yùn)算符(Q1)與x比較

      post[j++]=Pop(&S);//Q1>=x時(shí),輸出棧頂符并退棧

      Push(&S,x);//Q1

      }break;default:post[j++]=x;//操作數(shù)直接輸出

      } }while(x!='#');post[j]='