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

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

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

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

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

      北京科技大學數(shù)據(jù)結構試驗報告(附錄含代碼)

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

      第一篇:北京科技大學數(shù)據(jù)結構試驗報告(附錄含代碼)

      一、1)功能描述

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

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

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

      4)心得體會

      通過做第一題,學習到鏈表的建立以及鏈表里指針的使用,并且復習了比較法里面的打擂臺法。

      二、1)功能描述

      實現(xiàn)算術表達式求值程序(棧的運用),輸入中綴表達式,可將其轉(zhuǎn)換成后綴表達式 2)詳細設計

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

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

      4)心得體會

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

      三、1)功能描述

      實現(xiàn)鏈式隊列運算程序(隊列的運用)2)詳細設計

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

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

      4)心得體會

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

      四、1)功能描述

      ①構造關于F的Huffman樹;

      ②求出并打印D總各字符的Huffman編碼。2)詳細設計

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

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

      結果截圖

      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)詳細設計

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

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

      4)心得體會

      通過做第五題,練習運用二叉樹模型解決了一些實際問題如現(xiàn)實中字典的編排問題,在熟悉算法的基礎上,同時得出結論,好的算法可以應用與實際生活生產(chǎ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é)點,p為表尾節(jié)點指針

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

      //建立頭節(jié)點

      r=H;

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

      //申請新節(jié)點

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

      {

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

      r=p;

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

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

      return H;

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

      {

      //返回相鄰兩數(shù)之和最大的第一個數(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結束。/// 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ù)之和最大的第一個數(shù)為:%dnContinue?

      Y/N

      free(H);

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

      ”,pmax->data);實驗二:

      #include #include #include typedef struct node //棧節(jié)點類型 { char data;//存儲一個棧元素

      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節(jié)點

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

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

      p=(*top)->next;

      Pop(top);//依次彈出節(jié)點直到???/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[])//中綴表達式mid到后綴表達式post的轉(zhuǎn)換的算法 { 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;//操作數(shù)直接輸出

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