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

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

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

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

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

      實(shí)驗(yàn)1 線性表應(yīng)用-多項(xiàng)式計(jì)算

      時(shí)間:2019-05-11 23:46:24下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《實(shí)驗(yàn)1 線性表應(yīng)用-多項(xiàng)式計(jì)算》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《實(shí)驗(yàn)1 線性表應(yīng)用-多項(xiàng)式計(jì)算》。

      第一篇:實(shí)驗(yàn)1 線性表應(yīng)用-多項(xiàng)式計(jì)算

      一.實(shí)驗(yàn)?zāi)康暮鸵?/p>

      1.進(jìn)一步掌握線性表的的基本操作。

      2.掌握線性表的典型應(yīng)用----多項(xiàng)式表示與計(jì)算。

      二.實(shí)驗(yàn)內(nèi)容

      1. 設(shè)用線性表((a1, e1),(a2, e2), ……,(am, em))表示多項(xiàng)式P(x)= a1*xe1 + a2*xe2 +…+ am*xem,請編寫用鏈?zhǔn)酱鎯Y(jié)構(gòu)(帶表頭附加結(jié)點(diǎn)的單鏈表)存儲該多項(xiàng)式時(shí),多項(xiàng)式基本操作的實(shí)現(xiàn)函數(shù)。要求:把多項(xiàng)式線性表的結(jié)構(gòu)定義及多項(xiàng)式基本操作實(shí)現(xiàn)函數(shù)存放在文件Linkpoly.h中。說明:基本操作可包括如下 ① 初始化多項(xiàng)式InitPoly(p)② 輸出多項(xiàng)式TraversePoly(p)③ 清除多項(xiàng)式ClearPoly(p)④ 插入一項(xiàng) InsertPoly(p, a, e)

      ⑤ 刪除一項(xiàng) DeletetPoly(p, a, e, pos)⑥ 多項(xiàng)式求值PolySum(p, x)

      ⑦ 多項(xiàng)式相加PolyAdd(p1, p2)

      2. 建立主程序文件test1.cpp,在主函數(shù)main()中通過調(diào)用Linkpoly.h中的函數(shù)進(jìn)行測試。

      3. 編寫用順序存儲結(jié)構(gòu)存儲多項(xiàng)式時(shí),上述各多項(xiàng)式基本操作的實(shí)現(xiàn)函數(shù)。要求: 把多項(xiàng)式線性表的結(jié)構(gòu)定義及多項(xiàng)式基本操作實(shí)現(xiàn)函數(shù)存放在文件Seqpoly.h中,在主程序文件test1.cpp中增加測試語句對Seqpoly.h中的函數(shù)進(jìn)行測試。

      4. 填寫實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告文件取名為report1.doc。

      5. 上傳實(shí)驗(yàn)報(bào)告文件report1.doc與源程序文件test1.cpp及Linkpoly.h、Seqpoly.h 到Ftp服務(wù)器上自己的文件夾下。

      三.函數(shù)的功能說明及算法思路

      包括每個(gè)函數(shù)的功能說明,及一些重要函數(shù)的算法實(shí)現(xiàn)思路

      四.實(shí)驗(yàn)結(jié)果與分析

      包括運(yùn)行結(jié)果截圖等

      五.心得體會

      記錄實(shí)驗(yàn)感受、上機(jī)過程中遇到的困難及解決辦法、遺留的問題、意見和建議等。

      【附錄----源程序】 Test1.cpp: #include #include #include #include “Linkpoly.h” #include “Seqpoly.h” void main(){ cout<<“現(xiàn)在進(jìn)行第一次測試。(鏈表表示)”<

      //初始化多項(xiàng)式

      InitPoly(pb);cout<<“請輸入要測試的項(xiàng)數(shù):”;cin>>n;cout<<“請依次輸入要測試的各項(xiàng)的系數(shù)和指數(shù):”;for(i=0;i

      cin>>a;

      cin>>e;

      InsertPoly(pa, a, e);

      //插入一項(xiàng)

      pa=pa->next;} pa=pa->next;cout<<“該多項(xiàng)式為:”;TraversePoly(pa);

      //輸出多項(xiàng)式

      cout<>a;cin>>e;cin>>pos;if(DeletetPoly(pa, a, e, pos)){

      cout<<“刪除成功!現(xiàn)在多項(xiàng)式為:”;

      TraversePoly(pa);

      cout<

      cout<<“刪除失??!”<>x;sum=PolySum(pa, x);cout<<“該多項(xiàng)式的值為:”<>n;cout<<“請輸入該多項(xiàng)式的各項(xiàng)系數(shù)和指數(shù):”;for(i=0;i

      cin>>a;

      cin>>e;

      InsertPoly(pb, a, e);

      //插入一項(xiàng)

      pb=pb->next;} pb=pb->next;pp=PolyAdd(pa, pb);cout<<“兩多項(xiàng)式相加后得到的多項(xiàng)式為:”;TraversePoly(pp);cout<

      cout<

      cout<

      cout<<“現(xiàn)在進(jìn)行第二次測試。(順序表表示)”<>n;cout<<“請依次輸入要測試的各項(xiàng)的系數(shù)和指數(shù):”;for(i=0;i

      cin>>a;

      cin>>e;

      InsertPoly1(s, a, e);} cout<<“該多項(xiàng)式為:”;TraversePoly1(s);cout<>a;cin>>e;cin>>pos;if(DeletetPoly1(s, a, e, pos)){

      cout<<“刪除成功!現(xiàn)在多項(xiàng)式為:”;

      TraversePoly1(s);

      cout<

      cout<<“刪除失??!”<>x;sum=PolySum1(s, x);cout<<“該多項(xiàng)式的值為:”<>n;cout<<“請輸入該多項(xiàng)式的各項(xiàng)系數(shù)和指數(shù):”;for(i=0;i

      cin>>a;

      cin>>e;

      InsertPoly1(t, a, e);

      //插入一項(xiàng)

      } q=PolyAdd1(s, t);cout<<“兩多項(xiàng)式相加后得到的多項(xiàng)式為:”;TraversePoly1(q);cout<

      Linkploy.h: struct NodeType{

      float coef;

      int exp;

      NodeType *next;};bool InitPoly(NodeType *&p)

      //初始化多項(xiàng)式 { if((p=new NodeType)==NULL)

      return false;p->next=p;return true;} void TraversePoly(NodeType *p)

      //輸出多項(xiàng)式 {

      NodeType *h=p->next;if(h!=p){

      cout<coef<<“*”<<“X”<<“^”<exp;

      h=h->next;} while(h!=p){

      if(h->coef>0)

      cout<<“+”;

      cout<coef<<“*”<<“X”<<“^”<exp;

      h=h->next;} } void ClearPoly(NodeType *&p)

      //清除多項(xiàng)式 { NodeType *cp,*np;cp=p->next;while(cp!=p){

      np=cp->next;

      delete cp;

      cp=np;} p->next=p;} bool InsertPoly(NodeType *&p, float a, int e)

      //插入一項(xiàng) { NodeType *h;if((h=new NodeType)==NULL)

      return false;h->coef=a;h->exp=e;h->next=p->next;p->next=h;return true;} bool DeletetPoly(NodeType *&p, float a, int e, int pos)

      //刪除一項(xiàng) { if(pos>1||pos<-1)

      return false;NodeType *cp=p->next;NodeType *np=p;if(pos==0){

      while(cp!=p){

      if(cp->coef==a&&cp->exp==e)

      break;

      else{

      np=cp;

      cp=cp->next;

      }

      } } else if(pos==-1)

      while(cp!=p){

      np=cp;

      cp=cp->next;

      } np->next=cp->next;delete cp;

      return true;} double PolySum(NodeType *p, float x)

      //多項(xiàng)式求值 { int i;double sum=0,item;

      NodeType *cp=p->next;while(cp!=p){

      item=1;

      for(i=1;i<=cp->exp;i++)

      item=item*x;

      sum=sum+item*cp->coef;

      cp=cp->next;} return sum;} NodeType *PolyAdd(NodeType *p1, NodeType *p2)

      //多項(xiàng)式相加 { float coef;NodeType *a=p1->next,*b=p2->next,*c,*pc;

      InitPoly(c);pc=c;while(a!=p1&&b!=p2){

      if(a->exp==b->exp){

      coef=a->coef+b->coef;

      if(coef!=0){

      InsertPoly(pc, coef, a->exp);

      pc=pc->next;

      }

      a=a->next;

      b=b->next;

      }

      else if(a->expexp){

      InsertPoly(pc,a->coef,a->exp);

      pc=pc->next;

      a=a->next;

      }

      else{

      InsertPoly(pc,b->coef,b->exp);

      pc=pc->next;

      b=b->next;

      } } while(a!=p1){

      InsertPoly(pc,a->coef,a->exp);

      pc=pc->next;

      a=a->next;

      } while(b!=p2){

      InsertPoly(pc,b->coef,b->exp);

      pc=pc->next;

      b=b->next;

      } return c;}

      Seqploy.h: #define

      MaxSize 10000 struct ListType{

      float *list;

      int

      size;};void InitPoly1(ListType &p)

      //初始化多項(xiàng)式 { p.list=(float*)malloc(MaxSize*sizeof(float));

      if(p.list==NULL){

      cout<<“動態(tài)可分配的儲存空間用完,退出運(yùn)行!”<

      exit(1);

      }

      p.size=0;for(int i=0;i

      p.list[i]=0;} void TraversePoly1(ListType p)

      //輸出多項(xiàng)式 { int i=0;if(p.list[i]!=0)

      cout<

      for(i=1;i

      if(p.list[i]!=0)

      break;

      cout<

      if(p.list[i]>0){

      cout<<“+”;

      cout<

      }

      if(p.list[i]<0)

      cout<

      //清除多項(xiàng)式 { if(p.list!=NULL){

      delete []p.list;

      p.list=NULL;} p.size=0;} void InsertPoly1(ListType &p, float a, int e)

      //插入一項(xiàng) { p.list[e]=a;if(p.size

      p.size=e;} bool DeletetPoly1(ListType &p, float a, int e, int pos)

      //刪除一項(xiàng) { int i,n;if(p.size==0){

      cout<<“多項(xiàng)式為空,刪除無效!”<

      return false;} if(pos==0)

      if(p.list[e]==a)

      p.list[e]=0;else if(pos==-1)

      p.list[p.size]=0;return true;} double PolySum1(ListType p, float x)

      { double sum=0,item;int i,j;for(i=0;i<=p.size;i++){

      item=1;

      for(j=1;j<=i;j++)

      item=item*x;

      sum=sum+item*p.list[i];} return sum;} ListType PolyAdd1(ListType p1, ListType p2){ ListType p;InitPoly1(p);float coef;int i,j;for(i=0;i<=p1.size;i++){

      coef=p1.list[i]+p2.list[i];

      InsertPoly1(p, coef, i);}

      //多項(xiàng)式求值

      //多項(xiàng)式相加

      if(i<=p1.size)

      for(j=i;j<=p1.size;j++)

      InsertPoly1(p, p1.list[j], j);if(i<=p2.size)

      for(j=i;j<=p2.size;j++)

      InsertPoly1(p, p2.list[j], j);return p;}

      第二篇:實(shí)驗(yàn)總結(jié)報(bào)告-線性表

      實(shí)驗(yàn)總結(jié)報(bào)告—棧和隊(duì)列

      學(xué)號:

      姓名: 時(shí)間:

      一、目的 1.做實(shí)驗(yàn)的目的

      加深對線性表的理解,學(xué)會定義線性表的存儲結(jié)構(gòu),掌握線性表的基本操作。

      2.撰寫實(shí)驗(yàn)報(bào)告的目的

      對本次實(shí)驗(yàn)情況進(jìn)行總結(jié),加強(qiáng)對實(shí)驗(yàn)內(nèi)容的理解,對實(shí)驗(yàn)過程有一個(gè)系統(tǒng)的認(rèn)識,從中獲得本次試驗(yàn)的經(jīng)驗(yàn),并對實(shí)驗(yàn)結(jié)果進(jìn)行適當(dāng)?shù)姆治?,加深對棧和?duì)列的理解和認(rèn)識。

      二、內(nèi)容

      1.說明實(shí)驗(yàn)次數(shù)及實(shí)驗(yàn)內(nèi)容 本次實(shí)驗(yàn)用一次實(shí)驗(yàn)課時(shí)完成 實(shí)驗(yàn)內(nèi)容:

      節(jié)點(diǎn)定義:

      typedef struct node{

      int idx;int age;struct node *next;}Node,*List;本次實(shí)驗(yàn)的對象的存儲內(nèi)容包括ID和AGE,所以定義了如上的結(jié)構(gòu)體,idx用于存儲ID號,age用于存儲年齡,next用于形成鏈?zhǔn)浇Y(jié)構(gòu),Node定義了該類型的一個(gè)節(jié)點(diǎn),List定義了該類型的一個(gè)鏈表。(1)、編寫函數(shù)CreateList()和PrintList(),從給定數(shù)組創(chuàng)建鏈表,打印鏈表。

      int idx[8] = {1,2,3,4,5,6,7,8};int age[8] = {15,18,13,22,50,18,30,20};List CreatList(int idx[], int age[],int len){} int PrintList(List L){}(2)、編寫函數(shù)DeleteNode(List L, int delete_age),完成以下操作。int DeleteNodeAge(List L, int delete_age){} 該函數(shù)傳入List L,可以直接修改鏈表的節(jié)點(diǎn),建議返回值為int 或void類型,無需為List類型,3,4題同上。2.1刪除年齡為18的成員,打印鏈表。2.2刪除年齡為20的成員,打印鏈表。2.3刪除年齡為15的成員,打印鏈表。

      2.4(可選)刪除年齡為21的成員(因無此成員,報(bào)錯(cuò)),打印鏈表。(3)、編寫函數(shù)InsertNodeByIdx(List L, Node nd),完成以下操作。(或編寫函數(shù)InsertNodeByIdx(List L, Node *pnd),完成以下操作。)(建議用 Node *pnd,因Node nd作為參數(shù)傳給函數(shù)InsertNodeByIdx,nd本身不能被修改,而插入鏈表需修改nd.next,故需創(chuàng)建新的節(jié)點(diǎn)把nd的idx和age賦值給新節(jié)點(diǎn)。)

      3.1將(idx,age)=(6,23)插入鏈表,保證鏈表的idx仍為升序,打印鏈表。3.2將(idx,age)=(1,25)插入鏈表,保證鏈表的idx仍為升序,打印鏈表。(4)(選做)、編寫函數(shù)InsertNodeByAge(List L, Node nd),完成以下操作。(或編寫函數(shù)InsertNodeByAge(List L, Node *pnd),完成以下操作。)

      4.1將(idx,age)=(9,31)插入鏈表,不用保證鏈表的idx仍為升序,新節(jié)點(diǎn)插在節(jié)點(diǎn)nd0后面,要求nd0.age是整個(gè)鏈表節(jié)點(diǎn)的age小于且最接近nd.age,打印鏈表。

      (提示:本例要求插在(7,30)后面。)4.2插入節(jié)點(diǎn)(8,1)

      (提示:本例要求插在(1,25)之前,即最前面,因age=1最小。)2.做實(shí)驗(yàn)完成情況

      要求實(shí)驗(yàn)內(nèi)容在實(shí)驗(yàn)時(shí)間內(nèi)全部完成,選做實(shí)驗(yàn)未做。創(chuàng)建鏈表:

      List CreateList(int idx[],int age[],int len){ List p,L;int i;L=NULL;for(i=len-1;i>=0;i--){

      p=new Node;

      p->age=age[i];

      p->idx=idx[i];

      p->next=L;

      L=p;} return L;} 該操作創(chuàng)建一個(gè)不帶頭節(jié)點(diǎn)的鏈表并返回類型為List的結(jié)果 打印鏈表:

      void PrintList(List L){ List p=L;printf(“idx agen”);while(p){

      printf(“%d %dn”,p->idx ,p->age);

      p=p->next;} } 該操作從表頭到表尾依次打印idx和age 刪除節(jié)點(diǎn):

      int DeleteNodeAge(List &L, int delete_age){ List p=L;int flag=0;if(p->age==delete_age){

      L=L->next;

      flag=1;} else{ while(p->next){

      if(p->next->age==delete_age){

      flag++;

      if(p->next->next==NULL)

      p->next=NULL;

      else p->next=p->next->next;

      }

      else p=p->next;

      } } return flag;} 該操作刪除需要刪除的節(jié)點(diǎn),成功刪除返回刪除節(jié)點(diǎn)的個(gè)數(shù),否則返回0 插入節(jié)點(diǎn):

      void InsertNodeByIdx(List &L, Node *pnd){ List p=L;if(p->idx>=pnd->idx){

      pnd->next=L;

      L=pnd;

      return;} else{ while(p->next){

      if(p->next->idx<=pnd->idx)

      p=p->next;

      else{

      pnd->next=p->next;

      p->next=pnd;

      return;

      }

      } } } 該操作完成節(jié)點(diǎn)的插入,插入之后鏈表仍按idx成升序 主函數(shù): int main(){ List L,pnd1,pnd2;pnd1=new Node;pnd2=new Node;int idx[8]={1,2,3,4,5,6,7,8},age[8]={15,18,13,22,50,18,30,20},r;L=CreateList(idx,age,8);PrintList(L);r=DeleteNodeAge(L,18);printf(“The result is %dn”,r);PrintList(L);r=DeleteNodeAge(L,20);printf(“The result is %dn”,r);PrintList(L);r=DeleteNodeAge(L,15);printf(“The result is %dn”,r);PrintList(L);pnd1->idx=6;pnd1->age=23;InsertNodeByIdx(L,pnd1);PrintList(L);pnd2->idx=1;pnd2->age=25;InsertNodeByIdx(L,pnd2);PrintList(L);system(“pause”);return 0;} 實(shí)驗(yàn)結(jié)果:

      從實(shí)驗(yàn)代碼及結(jié)果來看,首先按要求創(chuàng)建單鏈表,從打印結(jié)果來看,鏈表成功創(chuàng)建;第二步刪除age為18的節(jié)點(diǎn),從鏈表來看有兩個(gè)age為18的節(jié)點(diǎn),所以Delete的返回值r為2,從打印結(jié)果來看,兩個(gè)節(jié)點(diǎn)成功刪除;第三步刪除age為20的節(jié)點(diǎn),鏈表中只有一個(gè)符合要求的節(jié)點(diǎn),所以返回值r為1,打印結(jié)果說明成功刪除;第四步插入idx為6,age為23的節(jié)點(diǎn),第四步插入idx為1,age為25的節(jié)點(diǎn),從打印結(jié)果來看均成功操作。

      三、總結(jié)

      第三篇:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-一元多項(xiàng)式加減乘計(jì)算

      《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)

      多項(xiàng)式計(jì)算

      班級: 學(xué)號: 姓名: 指導(dǎo)老師:

      多項(xiàng)式計(jì)算

      1、問題描述

      能夠按照指數(shù)降序排列建立多項(xiàng)式;能夠完成兩個(gè)多項(xiàng)式的相加、相減和相乘,并將結(jié)果輸出。

      2、設(shè)計(jì)思路

      這個(gè)程序的關(guān)鍵是多項(xiàng)式的創(chuàng)建和排列,以及相乘時(shí)系數(shù)相乘和指數(shù)相加、相加時(shí)相同指數(shù)的系數(shù)相加、相減時(shí)相同指數(shù)的系數(shù)相減。由于多項(xiàng)式擁有指數(shù)和系數(shù)(假設(shè)基數(shù)已定),所以可以定義一個(gè)包含指數(shù)系數(shù)的結(jié)構(gòu)體,用單鏈表存儲多項(xiàng)式的數(shù)據(jù),所以結(jié)構(gòu)體包含next指針。數(shù)據(jù)插入時(shí)比較兩數(shù)的指數(shù),按照降序排序,從表頭的next開始,直至找到合適的位置,然后開始鏈表中數(shù)值的插入,如果相等則直接將指數(shù)相加,如果大于就將新數(shù)據(jù)插入到當(dāng)前指向的前面,否則將新數(shù)據(jù)插入到最后。輸入完數(shù)據(jù)后選擇計(jì)算方式(相乘、相加、相減),多項(xiàng)式運(yùn)算時(shí)要循環(huán)遍歷整個(gè)多項(xiàng)式,多項(xiàng)式的每一組數(shù)據(jù)都要和另一個(gè)多項(xiàng)式整組數(shù)據(jù)相運(yùn)算(每一個(gè)運(yùn)算值都存儲到新建的“多項(xiàng)式”鏈表中),直到兩個(gè)多項(xiàng)式都遍歷完結(jié)束。

      3、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

      在模擬多項(xiàng)式對象時(shí),為了簡化處理,只取最核心的兩個(gè)數(shù)據(jù):多項(xiàng)式的系數(shù)和指數(shù)。前面提到,要用單鏈表操作,所以要加上個(gè)next指針,再由該結(jié)構(gòu)體定義一個(gè)結(jié)點(diǎn)類型和指針類型。具體數(shù)據(jù)結(jié)構(gòu)定義如下:

      typedef struct node{ int xs;/*系數(shù)*/ int zs;

      /*指數(shù)*/ struct node * next;/*next指針*/ }Dnode,* Dnodelist;

      4、功能函數(shù)設(shè)計(jì)

      (1)鏈表初始化函數(shù)Creat_node()

      帶有頭結(jié)點(diǎn)的頭指針指向空(NULL)。(2)多項(xiàng)式數(shù)據(jù)的創(chuàng)建函數(shù)Creat_Dmeth()

      當(dāng)鏈表初始化成功后,開始創(chuàng)建多項(xiàng)式。分別循環(huán)輸入兩個(gè)多項(xiàng)式的系數(shù)和指數(shù),其中要用到插入函數(shù)。

      (3)數(shù)據(jù)的插入函數(shù)Insert_node()當(dāng)創(chuàng)建多項(xiàng)式時(shí),要用到此函數(shù),即利用插入的方式將多項(xiàng)式的數(shù)據(jù)連接起來。再輸入一組數(shù)據(jù)后,程序自動調(diào)用此函數(shù),插入時(shí)也進(jìn)行著排序,從表頭的next開始,一一比較指數(shù)大小,直到大于或等于當(dāng)前指向的數(shù)據(jù)或遍歷完所有數(shù)據(jù)時(shí)停止,然后開始鏈表中數(shù)值的插入,如果相等則直接將指數(shù)相加,如果大于就將新數(shù)據(jù)插入到當(dāng)前指向的前面,否則將新數(shù)據(jù)插入到最后。

      (4)多項(xiàng)式的顯示函數(shù)Show()從多項(xiàng)式表頭的next開始,直到指向空(NULL),將系數(shù)與指數(shù)一一顯示。

      (5)選擇運(yùn)算方式的函數(shù)select()三種選擇:1為相乘,2為相加,3為相減;每一種選擇調(diào)用相應(yīng)的運(yùn)算函數(shù)。

      (6)多項(xiàng)式的運(yùn)算函數(shù):新建鏈表存儲計(jì)算后的多項(xiàng)式

      1、多項(xiàng)式相乘Mulresult()創(chuàng)建兩個(gè)指針分別指向兩個(gè)多項(xiàng)式表頭的next,使用兩個(gè)while函數(shù)嵌套循環(huán),遍歷每一組數(shù)據(jù),每遍歷一次都將兩組數(shù)據(jù)的系數(shù)相乘,指數(shù)相加,再利用插入函數(shù)將系數(shù)與指數(shù)存儲到新建多項(xiàng)式的鏈表中。

      2、多項(xiàng)式相加Addresult()創(chuàng)建兩個(gè)指針分別指向兩個(gè)多項(xiàng)式表頭的next,分別使用兩個(gè)while函數(shù)獨(dú)自循環(huán),遍歷各自的每一組數(shù)據(jù),每遍歷一次都將系數(shù)與指數(shù)存儲到新建多項(xiàng)式的鏈表中。因?yàn)榇鎯r(shí)利用到插入函數(shù),而插入函數(shù)中有相同指數(shù)的系數(shù)相加功能,所以直接將兩個(gè)多項(xiàng)式的數(shù)據(jù)依次插入到新的多項(xiàng)式中即可完成多項(xiàng)式相加。

      3、多項(xiàng)式相減Subresult()創(chuàng)建兩個(gè)指針分別指向兩個(gè)多項(xiàng)式表頭的next,以兩個(gè)指針同時(shí)不為空為條件循環(huán)遍歷,如果當(dāng)前多項(xiàng)式1的指數(shù)小于多項(xiàng)式2,則將當(dāng)前多項(xiàng)式2的系數(shù)置負(fù),指數(shù)不變,存入新建多項(xiàng)式中,指向多項(xiàng)式2的指針指向下一個(gè);如果如果當(dāng)前多項(xiàng)式1的指數(shù)大于多項(xiàng)式2,則將當(dāng)前多項(xiàng)式1的系數(shù)指數(shù)不變,存入新建多項(xiàng)式中,指向多項(xiàng)式1的指針指向下一個(gè);否則將多項(xiàng)式1的系數(shù)減去2的系數(shù)后存入新建多項(xiàng)式中,指數(shù)不變存入,再將兩個(gè)指針同時(shí)指向下一個(gè)。結(jié)束循環(huán)后判斷是哪一個(gè)多項(xiàng)式遍歷完了,將未遍歷完的多項(xiàng)式剩下的數(shù)據(jù)全部插入到新建多項(xiàng)式中。

      (7)主函數(shù)main()創(chuàng)建兩個(gè)多項(xiàng)式的鏈表并且初始化,分別調(diào)用相應(yīng)的多項(xiàng)式創(chuàng)建函數(shù),創(chuàng)建成功后選擇運(yùn)算方式,再將運(yùn)算結(jié)果輸出顯示。

      5、程序代碼

      #include #include typedef struct node{ int xs;int zs;struct node * next;}Dnode,* Dnodelist;/*定義結(jié)構(gòu)體*/

      Dnodelist Creat_node(void)/*鏈表初始化*/ { Dnodelist D;D=(Dnodelist)malloc(sizeof(Dnode));if(D)

      D->next=NULL;return D;}

      int Insert_node(Dnodelist D,int xs,int zs)/*插入函數(shù)*/ { Dnodelist p;Dnodelist q;Dnodelist r;p=D;while(p->next){

      r=p;

      p=p->next;

      if(zs==p->zs)/*指數(shù)相等,系數(shù)直接相加,結(jié)束*/

      {

      p->xs=p->xs+xs;

      return 1;

      }

      else if(zs>p->zs)/*指數(shù)大于當(dāng)前數(shù)據(jù)的,將數(shù)據(jù)插入當(dāng)前數(shù)據(jù)之前,結(jié)束*/

      {

      q=Creat_node();

      q->xs=xs;

      q->zs=zs;

      r->next=q;

      q->next=p;

      return 1;

      } }/*while(p->next)*/ q=Creat_node();/*要插入的數(shù)據(jù)指數(shù)最小,直接插入至鏈表最后*/ q->xs=xs;q->zs=zs;q->next=p->next;p->next=q;return 1;free(p);free(q);free(r);} Dnodelist Creat_Dmeth(int length)/*創(chuàng)建多項(xiàng)式*/ { int i,m,n;Dnodelist D;D=Creat_node();for(i=0;i

      scanf(“%d,%d”,&m,&n);

      Insert_node(D,m,n);/*調(diào)用插入函數(shù),將輸入的系數(shù)指數(shù)插入鏈表*/ } return D;}

      Dnodelist Mulresult(Dnodelist D1,Dnodelist D2)/*多項(xiàng)式相乘*/ { Dnodelist D;Dnodelist p,q;int x,z;D=Creat_node();p=D1->next;q=D2->next;while(q){

      while(p)

      {

      x=p->xs*q->xs;/*系數(shù)相乘,指數(shù)相加*/

      z=p->zs+q->zs;

      Insert_node(D,x,z);

      p=p->next;

      }

      p=D1->next;

      q=q->next;} return D;} Dnodelist Addresult(Dnodelist D1,Dnodelist D2)/*多項(xiàng)式相加*/ { Dnodelist D;Dnodelist p,q;int x,z;D=Creat_node();p=D1->next;q=D2->next;while(q){

      x=q->xs;

      z=q->zs;

      Insert_node(D,x,z);

      q=q->next;} while(p){

      x=p->xs;

      z=p->zs;

      Insert_node(D,x,z);

      p=p->next;/*直接插入數(shù)據(jù),利用插入函數(shù)可完成該功能*/ } return D;} Dnodelist Subresult(Dnodelist D1,Dnodelist D2)/*多項(xiàng)式相減*/ { Dnodelist D;Dnodelist p,q;int x,z;D=Creat_node();p=D1->next;q=D2->next;while(p&&q){

      if((p->zs)<(q->zs))/*指數(shù)?。?的數(shù)據(jù)在2中不存在),直接插入*/

      {

      x=-(q->xs);/*由于是式1減式2,所以系數(shù)置負(fù)*/

      z=q->zs;

      Insert_node(D,x,z);

      q=q->next;

      }

      else if((p->zs)>(q->zs))/*直接插入*/

      {

      x=p->xs;

      z=p->zs;

      Insert_node(D,x,z);

      p=p->next;

      }

      else /*入*/

      {

      z=q->zs;

      x=(p->xs)-(q->xs);

      Insert_node(D,x,z);

      p=p->next;

      q=q->next;

      } }/*while(p&&q)*/ while(p){

      x=p->xs;

      z=p->zs;

      Insert_node(D,x,z);

      p=p->next;} while(q){

      x=-(q->zs);

      z=q->zs;

      Insert_node(D,x,z);

      q=q->next;

      指數(shù)大(2的數(shù)據(jù)在1中不存在),指數(shù)相同的先將系數(shù)相減,再插 } /*將未遍歷完的數(shù)據(jù)直接插入*/ return D;} Dnodelist select(Dnodelist D1,Dnodelist D2)/*選擇函數(shù)*/ { Dnodelist D;int s;printf(“請選擇:n1:相乘n2:相加n3:相減n”);scanf(“%d”,&s);switch(s){ case 1: D=Mulresult(D1,D2);/*調(diào)用相乘函數(shù)*/

      printf(“相乘結(jié)果(系數(shù),指數(shù)):n”);

      break;case 2: D=Addresult(D1,D2);/*調(diào)用相加函數(shù)*/

      printf(“相加結(jié)果(系數(shù),指數(shù)):n”);

      break;case 3: D=Subresult(D1,D2);/*調(diào)用相減函數(shù)*/

      printf(“相減結(jié)果(系數(shù),指數(shù)):n”);

      break;default:

      printf(“無此選項(xiàng)n”);

      break;} return D;} void Show(Dnodelist D)/*顯示(輸出)函數(shù)*/ { Dnodelist r;r=D->next;while(r){

      printf(“(%d,%d)+”,r->xs,r->zs);

      r=r->next;} printf(“n”);} void main(){ Dnodelist D1,D2,D;int length;D1=Creat_node();D2=Creat_node();/*D1為多項(xiàng)式1,D2為多項(xiàng)式2,初始化*/

      } printf(“輸入多項(xiàng)式1的組數(shù):n”);scanf(“%d”,&length);printf(”輸入多項(xiàng)式1系數(shù),指數(shù):(%d組)n“,length);D1=Creat_Dmeth(length);/*創(chuàng)建多項(xiàng)式1*/ printf(”輸入多項(xiàng)式2的組數(shù):n”);scanf(“%d”,&length);printf(“輸入多項(xiàng)式2系數(shù),指數(shù):(%d組)n”,length);D2=Creat_Dmeth(length);/*創(chuàng)建多項(xiàng)式2*/ D=select(D1,D2);/*選擇運(yùn)算方式*/ Show(D);/*輸出顯示*/ getch();

      6、運(yùn)行與測試

      程序運(yùn)行時(shí),先提示第一個(gè)多項(xiàng)式的組數(shù),確定組數(shù)后才可輸入相應(yīng)的數(shù)據(jù),之后是多項(xiàng)式2;輸入完數(shù)據(jù)后,程序提示選擇運(yùn)算方式。選擇錯(cuò)誤則提示“無此選項(xiàng)”,運(yùn)行結(jié)束,選擇正確的選項(xiàng)將進(jìn)行相應(yīng)的運(yùn)算并輸出顯示。錯(cuò)誤選擇:

      相乘:

      相加:

      相減:

      7、設(shè)計(jì)心得

      這個(gè)程序是我較早時(shí)就已經(jīng)完成了的,當(dāng)時(shí)只是完成了多項(xiàng)式相乘,并且由多項(xiàng)式相乘延伸到了大數(shù)相乘,由于設(shè)計(jì)思路大部分相同,所以在選題時(shí)只選了多項(xiàng)式計(jì)算這個(gè)程序。當(dāng)今天再次看這個(gè)程序時(shí)發(fā)現(xiàn)有的代碼是多余的,所以我又將主要功能函數(shù)簡化了些。之后又增加了幾個(gè)運(yùn)算功能。本來大部分的輸入與選擇都是在主函數(shù)里實(shí)現(xiàn)的,為了是程序更美觀,我又加了一個(gè)選擇函數(shù)與顯示函數(shù)。所以這次的設(shè)計(jì),增加了我對程序美觀的認(rèn)識,其實(shí)模塊清楚后看上去也更容易理解些。

      第四篇:云計(jì)算應(yīng)用實(shí)例

      IBM“藍(lán)云"云計(jì)算平臺應(yīng)用實(shí)例

      IBM的“藍(lán)云”計(jì)算平臺是一套軟、硬件平臺,將Internet上使用的技術(shù)擴(kuò)展到企業(yè)平臺上,使得數(shù)據(jù)中心使用類似于互聯(lián)網(wǎng)的計(jì)算環(huán)境?!八{(lán)云”大量使用了IBM先進(jìn)的大規(guī)模計(jì)算技術(shù),結(jié)合了IBM自身的軟、硬件系統(tǒng)以及服務(wù)技術(shù),支持開放標(biāo)準(zhǔn)與開放源代碼軟件?!八{(lán)云”基于IBM Almaden研究中心的云基礎(chǔ)架構(gòu),采用了Xen和PowerVM虛擬化軟件,Linux操作系統(tǒng)映像以及Hadoop軟件(Google File System以及MapReduce的開源實(shí)現(xiàn))。IBM已經(jīng)正式推出了基于x86芯片服務(wù)器系統(tǒng)的“藍(lán)云”產(chǎn)品。

      “藍(lán)云”計(jì)算平臺由一個(gè)數(shù)據(jù)中心、IBM Tivoli部署管理軟件(Tivoli provisioning manager)、IBMTivoli監(jiān)控軟件(IBM Tivoli monitoring)、IBM WebSphere應(yīng)用服務(wù)器、IBM DB2數(shù)據(jù)庫以及一些開源信息處理軟件和開源虛擬化軟件共同組成。“藍(lán)云”的硬件平臺環(huán)境與一般的x86服務(wù)器集群類似,使用刀片的方式增加了計(jì)算密度?!八{(lán)云”軟件平臺的特點(diǎn)主要體現(xiàn)在虛擬機(jī)以及對于大規(guī)模數(shù)據(jù)處理軟件Apache Hadoop的使用上。Hadoop是開源版本的Google File System軟件和MapReduce編程規(guī)范。

      “藍(lán)云”計(jì)算平臺中的虛擬化技術(shù):“藍(lán)云”軟件的一個(gè)重要特點(diǎn)是虛擬化技術(shù)的使用。虛擬化的方式在“藍(lán)云”中有兩個(gè)級別,一個(gè)是在硬件級別上實(shí)現(xiàn)虛擬化,另一個(gè)是通過開源軟件實(shí)現(xiàn)虛擬化。硬件級別的虛擬化可以使用IBM P系列的服務(wù)器,獲得硬件的邏輯分區(qū)LPAR(logic partition)。邏輯分區(qū)的CPU資源能夠通過IBM Enterprise Workload Manager來管理。通過這樣的方式加上在實(shí)際使用過程中的資源分配策略,能夠使相應(yīng)的資源合理地分配到各個(gè)邏輯分區(qū)。P系列系統(tǒng)的邏輯分區(qū)最小粒度是1/10顆中央處理器(CPU)。Xen則是軟件級別上的虛擬化,能夠在Linux基礎(chǔ)上運(yùn)行另外一個(gè)操作系統(tǒng)。

      虛擬機(jī)是一類特殊的軟件,能夠完全模擬硬件的執(zhí)行,運(yùn)行不經(jīng)修改的完整的操作系統(tǒng),保留了一整套運(yùn)行環(huán)境語義。通過虛擬機(jī)的方式。在云計(jì)算平臺上獲得如下一些優(yōu)點(diǎn):

      (1)云計(jì)算的管理平臺能夠動態(tài)地將計(jì)算平臺定位到所需要的物理節(jié)點(diǎn)上,而無須停止運(yùn)行在虛擬機(jī)平臺上的應(yīng)用程序,進(jìn)程遷移方法更加靈活;(2)降低集群電能消耗,將多個(gè)負(fù)載不是很重的虛擬機(jī)計(jì)算節(jié)點(diǎn)合并到同一個(gè)物理節(jié)點(diǎn)上,從而能夠關(guān)閉空閑的物理節(jié)點(diǎn),達(dá)到節(jié)約電能的目的;(3)通過虛擬機(jī)在不同物理節(jié)點(diǎn)上的動態(tài)遷移,遷移了整體的虛擬運(yùn)行環(huán)境,能夠獲得與應(yīng)用無關(guān)的負(fù)載平衡性能;(4)在部署上也更加靈活,即可以將虛擬機(jī)直接部署到物理計(jì)算平臺上,而虛擬機(jī)本身就包括了相應(yīng)的操作系統(tǒng)以及相應(yīng)的應(yīng)用軟件,直接將大量的虛擬機(jī)映像復(fù)制到對應(yīng)的物理節(jié)點(diǎn)即可。

      “藍(lán)云”計(jì)算平臺中的存儲體系結(jié)構(gòu):“藍(lán)云”計(jì)算平臺中的存儲體系結(jié)構(gòu)對于云計(jì)算來說也是非常重要的,無論是操作系統(tǒng)、服務(wù)程序還是用戶的應(yīng)用程序的數(shù)據(jù)都保存在存儲體系中?!八{(lán)云”存儲體系結(jié)構(gòu)包含類似于Google File System的集群文件系統(tǒng)以及基于塊設(shè)備方式的存儲區(qū)域網(wǎng)絡(luò)SAN。

      在設(shè)計(jì)云計(jì)算平臺的存儲體系結(jié)構(gòu)時(shí),不僅僅是需要考慮存儲容最的問題。實(shí)際上,隨著硬盤容量的不斷擴(kuò)充以及硬盤價(jià)格的不斷下降??梢酝ㄟ^組合多個(gè)磁盤獲得很大的磁盤容量。相對于磁盤的容量,在云計(jì)算平臺的存儲中,磁盤數(shù)據(jù)的讀寫速度是一個(gè)更重要的問題,因此需要對多個(gè)磁盤進(jìn)行同時(shí)讀寫。這種方式要求將數(shù)據(jù)分配到多個(gè)節(jié)點(diǎn)的多個(gè)磁盤當(dāng)中。為達(dá)到這一目的,存儲技術(shù)有兩個(gè)選擇,一個(gè)是使用類似于Google File System的集群文件系統(tǒng)。另一個(gè)是基于塊設(shè)備的存儲區(qū)域網(wǎng)絡(luò)SAN系統(tǒng)。

      在藍(lán)云計(jì)算平臺上,SAN系統(tǒng)與分布式文件系統(tǒng)(例如Google File System)并不是相互對立的系統(tǒng),SAN提供的是塊設(shè)備接口。需要在此基礎(chǔ)上構(gòu)建文件系統(tǒng),才能被上層應(yīng)用程序所使用。而Google File System正好是一個(gè)分布式的文件系統(tǒng),能夠建立在SAN之上。兩者都能提供可靠性、可擴(kuò)展性,至于如何使用還需要由建立在云計(jì)算平臺上的應(yīng)用程序來決定,這也體現(xiàn)了計(jì)算平臺與上層應(yīng)用相互協(xié)作的關(guān)系。

      第五篇:圓錐體積計(jì)算和應(yīng)用

      圓錐體積計(jì)算和應(yīng)用

      教材第15頁例

      2、“練一練”,練習(xí)三第6-11題。

      教學(xué)目標(biāo):

      使學(xué)生進(jìn)一步掌握圓錐的體積計(jì)算方法,能根據(jù)不同的條件計(jì)算圓錐的體積,給應(yīng)用圓錐體積解決一些簡單的實(shí)際問題。

      教學(xué)重點(diǎn):

      運(yùn)用公式解決生活中的實(shí)際問題

      教學(xué)難點(diǎn):

      運(yùn)用公式解決生活中的實(shí)際問題

      教具準(zhǔn)備:小黑板

      教學(xué)進(jìn)程:

      一、復(fù)習(xí)舊知

      1、口算

      練習(xí)三第6題,指名學(xué)生口算。

      2、復(fù)習(xí)體積計(jì)算。

      (1)問:圓錐的體積怎樣計(jì)算?為什么圓錐體積V= Sh?

      (2)口答下列各圓錐的體積。

      ①底面積3平方分米,高2分米。

      ②底面積4平方厘米,高4.5。

      3、引入新課

      今天這節(jié)課,我們練習(xí)圓錐體積的計(jì)算,通過練習(xí),還要能應(yīng)用圓錐體積計(jì)算的方法解決些簡單實(shí)際問題。

      二、教學(xué)新課

      1、教學(xué)例2

      出示例2:

      學(xué)生讀題

      問:你們認(rèn)為這道題要先求什么,再求這堆沙的重量?

      指名學(xué)生板演,其余學(xué)生獨(dú)立做。

      集體訂正

      2、組織練習(xí)

      (1)“練一練”第1題

      指名三人板演,其余學(xué)生做第(3)小題。

      (2)“練一練”第2題

      (3)練習(xí)三第11題

      四、課內(nèi)作業(yè)

      練習(xí)三第7-9題 板書設(shè)計(jì)

      圓錐體積計(jì)算和應(yīng)用

      例2

      練習(xí)

      V = Sh

      下載實(shí)驗(yàn)1 線性表應(yīng)用-多項(xiàng)式計(jì)算word格式文檔
      下載實(shí)驗(yàn)1 線性表應(yīng)用-多項(xiàng)式計(jì)算.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        應(yīng)用實(shí)例——云計(jì)算

        云計(jì)算 Applogic以Application為單位向用戶交付,在一個(gè)網(wǎng)格(你也可以說成是集群,包括主機(jī)和存儲以及網(wǎng)絡(luò))上運(yùn)行多個(gè)用戶的多個(gè)應(yīng)用程序,比如,Exchange,CRM等,每個(gè)應(yīng)用程序會被分......

        BPA潮流計(jì)算實(shí)驗(yàn)指導(dǎo)書

        PSD-BPA電力系統(tǒng)分析程序 實(shí)驗(yàn)1——潮流計(jì)算 一、實(shí)驗(yàn)?zāi)康?1.了解并掌握電力系統(tǒng)計(jì)算機(jī)算法的相關(guān)原理。 2.了解和掌握PSD-BPA電力系統(tǒng)分析程序穩(wěn)態(tài)分析方法(即潮流計(jì)算)。 3.了......

        實(shí)驗(yàn)二 電力系統(tǒng)潮流計(jì)算實(shí)驗(yàn)

        電力系統(tǒng)分析實(shí)驗(yàn)報(bào)告 學(xué)生姓名: 學(xué) 號: 專業(yè)班級: 實(shí)驗(yàn)類型:□ 驗(yàn)證 □ 綜合 ■ 設(shè)計(jì) □ 創(chuàng)新 實(shí)驗(yàn)日期: 2012-5-28 實(shí)驗(yàn)成績: 一、實(shí)驗(yàn)?zāi)康模?本實(shí)驗(yàn)通過對電力系統(tǒng)潮流計(jì)算的計(jì)算......

        圓錐體積計(jì)算和應(yīng)用_20090607075801890

        圓錐體積計(jì)算和應(yīng)用 教學(xué)內(nèi)容:教材第15頁例2、“練一練”,練習(xí)三第6一11題。 教學(xué)要求:使學(xué)生進(jìn)—步掌握圓錐的體積計(jì)算方法,能根據(jù)不同的條件計(jì)算圓錐的體積,能應(yīng)用圓錐體積解決......

        網(wǎng)格計(jì)算的應(yīng)用及發(fā)展前景

        [摘 要]文章論述了網(wǎng)格計(jì)算的發(fā)展概況、在科學(xué)領(lǐng)域的應(yīng)用范圍、網(wǎng)格服務(wù)的特點(diǎn)以及在未來網(wǎng)絡(luò)市場中的發(fā)展?jié)摿?。[關(guān)鍵詞]數(shù)據(jù)庫;浮點(diǎn)運(yùn)算;虛擬化;資源共享現(xiàn)代社會由于大規(guī)模......

        實(shí)驗(yàn)五 電子商務(wù)及其應(yīng)用

        廣東海洋大學(xué)寸金學(xué)院學(xué)生實(shí)驗(yàn)報(bào)告書 實(shí)驗(yàn)名稱 系 學(xué)生姓名 實(shí)驗(yàn)六 電子商務(wù)及其應(yīng)用 課程名稱 財(cái)務(wù)會計(jì)教育 會計(jì)電算化 班級學(xué)號 專業(yè)實(shí)驗(yàn)地點(diǎn) 實(shí)驗(yàn)樓303 實(shí)驗(yàn)日期 一、......

        多媒體技術(shù)及應(yīng)用實(shí)驗(yàn)

        實(shí)驗(yàn)一、利用Photoshop制作個(gè)性化名片開發(fā)工具:Photoshop CS5 實(shí)驗(yàn)要求:利用合適的素材,再加上自己的創(chuàng)意設(shè)計(jì),設(shè)計(jì)出漂亮的一款富有創(chuàng)意的學(xué)生本人的個(gè)性化名片。 實(shí)驗(yàn)報(bào)告:(1)打......

        實(shí)驗(yàn)6JavaAWT及Swing應(yīng)用

        實(shí)驗(yàn)6 Java AWT及Swing應(yīng)用 實(shí)驗(yàn)內(nèi)容 (1)按鈕有序排列 (2)密碼驗(yàn)證問題 (3)名片錄入管理界面設(shè)計(jì) (4)文字字體設(shè)計(jì)窗體 1、按鈕有序排列 實(shí)驗(yàn)?zāi)康? (1) 了解 GUI 的概念 ;......