亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? laishaoshi.cpp

?? 一元稀疏多項式計算器
?? CPP
字號:
#include "conio.h"
#include "stdlib.h"
#include "string.h"
#include "iostream.h"
#include "math.h"
#include "stdlib.h"

#define TRUE       1
#define FALSE      0
typedef int status;

typedef struct NodeType 
{
    float coef;  //系數
    int   expn;  //指數
    struct NodeType *next;
} NodeType, *LinkType;

typedef LinkType polynomail; //用帶頭結點的有序鏈表存儲多項式

//——————————基本操作的函數————————————
void InitPolyn( polynomail &P);
     //構造一個多項式
status MakeNode( polynomail &pp,float Ncoef,int Nexpn);
     //創建一個結點
void CreatPolyn( polynomail &P,int m);
     //輸入m項的系數和指數,建立表示一元多項式的有序鏈表P
void ClearPolyn( polynomail &P);
     //將單鏈表清空,并釋放原鏈表的結點空間
void DestroyPolyn( polynomail &P);
     //銷毀一元多項式P
void PrintPolyn( polynomail P);
     //打印輸出一元多項式P
int  PolynLength( polynomail P);
     //返回一元多項式P中的項數
void MergePolynCoef(polynomail &Pn);
     //在序鏈表中,合并同類項
void SortPolyn(polynomail &Pn);
     //根據鏈表的expn指數域,對鏈表進行升序排序
void DelZeroNode(polynomail &Pn);
     //釋放無用結點,即系數為0項
void AddPolyn( polynomail Pa,polynomail Pb,polynomail &Pc);
     //完成多項式相加運算,即:Pc=Pa+Pb
void SubtractPolyn( polynomail Pa,polynomail Pb,polynomail &Pc);
     //完成多項式相減運算,即:Pc=Pa-Pb
void MultiplyPolyn( polynomail Pa,polynomail Pb,polynomail &Pc);
     //完成多項式相乘運算,即:Pc=Pa×Pb

float Evaluate(polynomail pn, float x);
     //求多項式的值


//————————基本操作的算法————————————————

void InitPolyn( polynomail &P)
//構造一個多項式
{  
   P=(NodeType *)malloc(sizeof(NodeType));
   P->coef=0;P->expn=0;P->next=NULL;
   //初始化帶頭結點的單鏈表
}

void ClearPolyn( polynomail &P)
//將單鏈表清空,并釋放原鏈表的結點空間
{ LinkType q;
  q=P->next;
  while(q!=NULL) //釋放原鏈表的結點空間
  {P->next=q->next;free(q);q=P->next;}
}

void DestroyPolyn( polynomail &P) 
//銷毀一元多項式P
{LinkType q=P;
 while(q!=NULL)
 {q=P->next;free(P);}//釋放所有結點空間
}

void SortPolyn(polynomail &Pn)
//根據鏈表的expn指數域,對鏈表進行升序排序
{ 
  MergePolynCoef(Pn);//先合并同類項
  LinkType p,q,r;
  q=Pn->next;Pn->next=NULL;
  while(q!=NULL) //插入法排序
  {  p=Pn; 
	 while(p->next!=NULL&&p->next->expn<q->expn)
		 p=p->next;

	 r=q->next;
	 q->next=p->next;
	 p->next=q;
	 q=r;   
  } 
}

void DelZeroNode(polynomail &Pn)
 //釋放無用結點,即系數為0項
{ LinkType p,q;
  p=Pn->next; q=Pn;
  while(p!=NULL)
  {  if(p->coef==0)
	  {q->next=p->next;
	   free(p);
	   p=q->next;
	  }
     else 
	 {q=p;p=p->next;}
  }
}

void MergePolynCoef(polynomail &Pn)
//在序鏈表中,合并同類項
{ LinkType p,p1,p2;
  p=Pn->next; 
  while(p!=NULL)
  {p1=p;p2=p->next;
    while(p2!=NULL) //合并指數相同項
	{ if(p->expn==p2->expn)
		{p->coef+=p2->coef;
		 p1->next=p2->next;
		 free(p2);
		 p2=p1->next;
		}
	   else {p1=p2;p2=p1->next;}
	 }
	p=p->next;
  }
 DelZeroNode(Pn);//刪除合并后系數為0的結點
}

status MakeNode( polynomail &pp,float Ncoef,int Nexpn)
//創建一個結點
{
    if (!(pp=(LinkType)malloc(sizeof(NodeType)))) 
    {
     cout<<"Error, the memory is overflow!"<<endl;
     return FALSE;
    }
    pp->coef=Ncoef;
    pp->expn=Nexpn;
    pp->next=NULL;
 return TRUE;
}

void CreatPolyn( polynomail &P,int m)
//輸入m項的系數和指數,建立表示一元多項式的有序鏈表P
{  float fcoef;
   int fexpn;
   NodeType *s,*q;
   q=P;
 //if(m==0)cout<<"空表!";
 for(int i=1;i<=m;i++)
   { cout<<"第"<<i<<"項式"<<endl;
     cout<<"系數,指數:";
	 cin>>fcoef>>fexpn;
	 s=(NodeType *)malloc(sizeof(NodeType));
	 s->coef=fcoef;s->expn=fexpn;s->next=NULL;
	 q->next=s;q=s;q->next=NULL;
   }
 MergePolynCoef(P); //合并指數相同項
 DelZeroNode(P);    //刪除系數為0的結點
 SortPolyn(P);      //按指數域,對鏈表進行升序排序
}

void PrintPolyn(polynomail P) 
//打印輸出一元多項式P
{ LinkType q;
  q=P->next;
  if(P->next==NULL) cout<<"0";
  else{
  //cout<<"\n輸出多項式:";
   while(q!=NULL)
   {if(q->coef>1||q->coef<-1)
	  cout<<q->coef;
     if(q->expn==0&&(q->coef==1||q->coef==-1))cout<<q->coef;
     else if(q->coef==-1&&q->expn!=0) cout<<"-";

     if(q->expn<0) cout<<"x^"<<"("<<q->expn<<")";
     else if(q->expn==1) cout<<"x"; 
     else if(q->expn>0) cout<<"x^"<<q->expn;

     if(q->next!=NULL&&q->next->coef>0)cout<<"+";
    q=q->next;
   }
  }//else
 //cout<<endl;
}

int PolynLength( polynomail P) 
//返回一元多項式P中的項數
{ int i=0;
  LinkType q;
  q=P->next;
 while(q!=NULL) {q=q->next;i++;}
 return i;
}



float Evaluate(polynomail pn, float x)
//求多項式的值
{ LinkType p;
  p=pn->next;
  float result=0;
  while(p!=NULL)
  {
   result+=(p->coef)*(float)pow(x,p->expn);
   //pow函數求x的n次方
   p=p->next;
  }
return result;
}

void AddPolyn(polynomail Pa,polynomail Pb,polynomail &Pc)
//完成多項式相加運算,即:Pc=Pa+Pb
{  float x;
   LinkType p,q,r;
   NodeType *s;
   p=Pa->next;
   q=Pb->next;
   r=Pc;
 while(p!=NULL&&q!=NULL)
  { if(p->expn==q->expn)//指數相同
	 { x=p->coef+q->coef ;
	    if(x!=0)  //指數相同,若系數相加不等于0,插入表中
		{s=(NodeType *)malloc(sizeof(NodeType));
		 s->coef=x;s->expn=q->expn;s->next=NULL;
         r->next=s;r=r->next;
		}
	  p=p->next;q=q->next;
	 }
	else if(q->expn<p->expn) //指數小的插入表中
	 {   s=(NodeType *)malloc(sizeof(NodeType));
		 s->coef=q->coef;s->expn=q->expn;s->next=NULL;
         r->next=s;r=r->next;
	  q=q->next;
	 }
    else  
	 {   s=(NodeType *)malloc(sizeof(NodeType));
		 s->coef=p->coef;s->expn=p->expn;s->next=NULL;
         r->next=s;r=r->next;
	   p=p->next;
	 }
  }
//加入余下的多項式 
  while(p!=NULL)
  { s=(NodeType *)malloc(sizeof(NodeType));
	s->coef=p->coef;s->expn=p->expn;s->next=NULL;
    r->next=s;r=r->next;
  p=p->next;
  }
  while(q!=NULL)
  { s=(NodeType *)malloc(sizeof(NodeType));
    s->coef=q->coef;s->expn=q->expn;s->next=NULL;
    r->next=s;r=r->next;
	q=q->next;
	}
}

void SubtractPolyn( polynomail Pa,polynomail Pb,polynomail &Pc)
     //完成多項式相減運算,即:Pc=Pa-Pb
{ float x;
   LinkType p,q,r;
   NodeType *s;
   p=Pa->next;
   q=Pb->next;
   r=Pc;
 while(p!=NULL&&q!=NULL)
  {  if(p->expn==q->expn)//指數相同
	 { x=p->coef-q->coef;
	    if(x!=0) //指數相同,若系數相減不等于0,插入表中
		{s=(NodeType *)malloc(sizeof(NodeType));
		 s->coef=x;s->expn=q->expn;s->next=NULL;
         r->next=s;r=r->next;
		}
	  p=p->next;q=q->next;
	 }
	 else if(q->expn<p->expn) //指數小的插入表中
	 {   s=(NodeType *)malloc(sizeof(NodeType));
		 s->coef=-q->coef; //減數的系數變為相反數
		 s->expn=q->expn;s->next=NULL;
         r->next=s;r=r->next;
	  q=q->next;
	 }
     else  
	 {   s=(NodeType *)malloc(sizeof(NodeType));
		 s->coef=p->coef;s->expn=p->expn;s->next=NULL;
         r->next=s;r=r->next;
	  p=p->next;
	 }
  }
//加入余下的多項式,減數的系數變為相反數
  while(p!=NULL)
  { s=(NodeType *)malloc(sizeof(NodeType));
	s->coef=p->coef;s->expn=p->expn;s->next=NULL;
    r->next=s;r=r->next;
  p=p->next;
  }
  while(q!=NULL)
  { s=(NodeType *)malloc(sizeof(NodeType));
    s->coef=-q->coef;s->expn=q->expn;s->next=NULL;
    r->next=s;r=r->next;
	q=q->next;
	}
}

void MultiplyPolyn( polynomail Pa,polynomail Pb,polynomail &Pc)
 //完成多項式相乘運算,即:Pc=Pa×Pb
{  LinkType p,q,r;
   NodeType *s;
   p=Pa->next; 
   r=Pc;
   while(p!=NULL)
   {q=Pb->next;
     while(q!=NULL)
	 { s=(NodeType *)malloc(sizeof(NodeType));
	   s->coef=p->coef*q->coef;
	   s->expn=p->expn+q->expn;
	   s->next=NULL;

       r->next=s;r=r->next;
	   q=q->next;
	 }
	 p=p->next;
   }
 MergePolynCoef(Pc);//合并指數相同項
 DelZeroNode(Pc);   //刪除系數為0的結點
 SortPolyn(Pc);     //按指數域,對鏈表進行升序排序

}


void main()
{ float x,sum;
  LinkType pa,pb,pc;
  InitPolyn(pa);
  InitPolyn(pb);
  InitPolyn(pc);
  int num1,num2;

inp: while(1)
{system("cls");

	cout<<endl;
	cout<<"姓名:賴少軾      學號:37號       班級:軟件031"<<endl;
	cout<<endl;
	cout<<"                        一元稀疏多項式計算器                                "<<endl;
	cout<<endl;
	cout<<"____________________________________________________________________________"<<endl;
    cout<<endl;                   
	cout<<"          求值(1)"<<endl;
    cout<<"          加法(2)"<<endl;
	cout<<"          減法(3)"<<endl;
	cout<<"          乘法(4)"<<endl;
	cout<<"          退出(0)"<<endl;
	cout<<endl;
	cout<<"____________________________________________________________________________"<<endl;
	
  char choice;
  cout<<endl<<" 請選擇操作(0-4):";
  cin>>choice;
  cout<<endl;
  switch(choice)
  {  case '1': cout<<" 求多項式A的值"<<endl;
             cout<<" 輸入多項式A的項數:";
             cin>>num1;
             CreatPolyn(pa,num1);
             cout<<" 多項式A為:";
			 PrintPolyn(pa);
			 cout<<endl<<endl;

			 cout<<" 輸入x的值:";
			 cin>>x;
			 sum=Evaluate(pa, x);
			 cout<<" 多項式A的值:";
			 PrintPolyn(pa);
			 cout<<"="<<sum;

			 ClearPolyn(pa);
			 cout<<"\nPress any key to continue!"<<endl;
             getche();system("cls");goto inp;

     case '2': cout<<" 多項式加法C=A+B"<<endl;
		     cout<<" 輸入多項式A的項數:";
             cin>>num1;
             CreatPolyn(pa,num1);
			 cout<<" 多項式A為:";
			 PrintPolyn(pa);
			 cout<<endl<<endl;

			 cout<<" 輸入多項式B的項數:";
             cin>>num2;
             CreatPolyn(pb,num2);
			 cout<<" 多項式B為:";
			 PrintPolyn(pb);
			 cout<<endl<<endl;
             
			 AddPolyn(pa,pb,pc);
             cout<<" 多項式C=A+B: (";
			 PrintPolyn(pa);
			 cout<<")+(";
			 PrintPolyn(pb);
			 cout<<")=";
			 PrintPolyn(pc);

			 ClearPolyn(pa);
			 ClearPolyn(pb);
			 ClearPolyn(pc);
		     cout<<"\nPress any key to continue!"<<endl;
             getche();system("cls");goto inp;

	 case '3': cout<<" 多項式減法C=A-B"<<endl;
		     cout<<" 輸入多項式A的項數:";
             cin>>num1;
             CreatPolyn(pa,num1);
			 cout<<" 多項式A為:";
			 PrintPolyn(pa);
			 cout<<endl<<endl;

			 cout<<" 輸入多項式B的項數:";
             cin>>num2;
             CreatPolyn(pb,num2);
			 cout<<" 多項式B為:";
			 PrintPolyn(pb);
			 cout<<endl<<endl;
             
			 SubtractPolyn(pa,pb,pc);
             cout<<" 多項式C=A-B: (";
			 PrintPolyn(pa);
			 cout<<")-(";
			 PrintPolyn(pb);
			 cout<<")=";
			 PrintPolyn(pc);

			 ClearPolyn(pa);
			 ClearPolyn(pb);
			 ClearPolyn(pc);
		     cout<<"\nPress any key to continue!"<<endl;
             getche();system("cls");goto inp;
		 
		
	 case '4': cout<<" 多項式乘法C=A×B"<<endl;
		     cout<<" 輸入多項式A的項數:";
             cin>>num1;
             CreatPolyn(pa,num1);
			 cout<<" 多項式A為:";
			 PrintPolyn(pa);
			 cout<<endl<<endl;

			 cout<<" 輸入多項式B的項數:";
             cin>>num2;
             CreatPolyn(pb,num2);
			 cout<<" 多項式B為:";
			 PrintPolyn(pb);
			 cout<<endl<<endl;
             
			 MultiplyPolyn(pa,pb,pc);
             cout<<" 多項式C=A×B: (";
			 PrintPolyn(pa);
			 cout<<")×(";
			 PrintPolyn(pb);
			 cout<<")=";
			 PrintPolyn(pc);

			 ClearPolyn(pa);
			 ClearPolyn(pb);
			 ClearPolyn(pc);
		     cout<<"\nPress any key to continue!"<<endl;
             getche();system("cls");goto inp;
		 
	 case '0':cout<<" 謝謝使用!再見!"<<endl<<endl;
		    return ;

     default:cout<<" 錯誤命令!"<<endl;
		     cout<<"Press any key to continue!"<<endl;
             getche();system("cls");goto inp;

  }//switch
 }//whlie(1)

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品伊人久久久久av一坑 | 亚洲国产aⅴ天堂久久| 成人午夜视频福利| 国产视频在线观看一区二区三区 | 成人午夜视频网站| 亚洲精品欧美在线| 3atv一区二区三区| 免费成人在线网站| 亚洲国产成人在线| 在线观看免费一区| 久久精品国产亚洲高清剧情介绍 | 欧美一区在线视频| 国产一区二区在线视频| 亚洲天堂av老司机| 欧美三级三级三级爽爽爽| 裸体一区二区三区| 国产精品家庭影院| 91精品国产综合久久国产大片| 激情六月婷婷久久| 亚洲视频一区在线| 这里只有精品免费| 国产盗摄一区二区| 亚洲已满18点击进入久久| 日韩欧美第一区| www.66久久| 蜜桃视频在线观看一区| 中文字幕一区二区视频| 7777精品伊人久久久大香线蕉| 韩国精品一区二区| 亚洲欧美电影一区二区| 日韩免费高清av| 成人性生交大片免费看在线播放| 一区二区三区四区av| 日韩美女视频在线| 日本久久精品电影| 国产在线国偷精品产拍免费yy| 亚洲欧美一区二区不卡| 日韩精品一区二区三区视频播放| 91麻豆精品秘密| 久久99蜜桃精品| 亚洲高清免费在线| 国产精品免费aⅴ片在线观看| 欧美私人免费视频| 国产精品 欧美精品| 日韩精品免费专区| 亚洲精品国久久99热| 亚洲精品在线电影| 欧美精品在线观看播放| av午夜一区麻豆| 激情小说亚洲一区| 亚洲成人激情综合网| 亚洲欧洲99久久| 欧美精品一区二区精品网| 欧美日韩午夜精品| 91美女精品福利| 成人免费福利片| 国产精华液一区二区三区| 欧美aa在线视频| 亚洲一二三区在线观看| 亚洲人妖av一区二区| 日本一区二区三级电影在线观看| 91精品国产综合久久精品麻豆| 91免费精品国自产拍在线不卡 | 蜜桃免费网站一区二区三区| 国产精品美女久久久久久| 欧美一二三区在线| 欧美亚洲图片小说| 99热精品一区二区| 懂色av噜噜一区二区三区av| 国产精品99久久久久久久女警 | 亚洲精品免费视频| 国产精品福利一区二区| 中文字幕va一区二区三区| 久久这里只有精品首页| 精品欧美黑人一区二区三区| 欧美一区二区视频观看视频| 这里只有精品视频在线观看| 欧美一级在线免费| 欧美一级高清大全免费观看| 欧美日韩国产首页在线观看| 欧美视频完全免费看| 欧美视频一区二区三区四区| 欧美高清性hdvideosex| 91精品国产综合久久香蕉麻豆| 91美女视频网站| 不卡视频一二三| 97久久久精品综合88久久| 不卡的av网站| 91福利区一区二区三区| 欧美日韩中文一区| 9191久久久久久久久久久| 欧美一区二区三区思思人| 日韩欧美久久久| 久久久久久**毛片大全| 国产精品免费免费| 一区二区三区加勒比av| 天天操天天综合网| 麻豆专区一区二区三区四区五区| 国产在线视视频有精品| 成人av免费观看| 欧美午夜一区二区| 欧美一级理论片| 国产午夜亚洲精品午夜鲁丝片| 中文字幕亚洲精品在线观看| 亚洲欧美日韩国产另类专区| 视频一区免费在线观看| 精品午夜久久福利影院| www.欧美色图| 91精品国产一区二区三区蜜臀 | 粉嫩一区二区三区在线看| 成人a级免费电影| 欧美日韩一级大片网址| 欧美大片顶级少妇| 亚洲天堂2014| 美女视频一区二区三区| 国产成人免费xxxxxxxx| 日本韩国精品一区二区在线观看| 欧美一区二区三区免费视频| 久久久亚洲精品石原莉奈| 亚洲伦理在线精品| 麻豆成人久久精品二区三区小说| 成人高清视频在线| 日韩亚洲欧美高清| 国产精品久久久久aaaa樱花| 日韩va亚洲va欧美va久久| 懂色av中文一区二区三区| 51午夜精品国产| 国产精品拍天天在线| 免费高清成人在线| 色偷偷久久一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 亚洲天天做日日做天天谢日日欢| 麻豆成人在线观看| 欧美在线免费视屏| 国产精品看片你懂得| 另类小说图片综合网| 在线一区二区三区四区| 中文欧美字幕免费| 美女视频一区二区| 欧美性感一区二区三区| 国产精品乱人伦中文| 精品系列免费在线观看| 欧美日韩mp4| 亚洲精品老司机| av电影在线不卡| 久久综合精品国产一区二区三区| 亚洲成av人影院在线观看网| 91在线视频播放地址| 久久综合999| 美国一区二区三区在线播放| 欧美日韩的一区二区| 国产精品久久午夜| 国产成人精品网址| 久久品道一品道久久精品| 青青草成人在线观看| 欧美日本视频在线| 亚洲aaa精品| 欧美日韩国产美女| 亚洲综合丝袜美腿| 色哦色哦哦色天天综合| 亚洲图片你懂的| 91丝袜高跟美女视频| 国产精品视频免费看| 懂色中文一区二区在线播放| 国产偷v国产偷v亚洲高清| 国内精品自线一区二区三区视频| 日韩免费高清电影| 久久精品国内一区二区三区| 日韩欧美一区二区三区在线| 免费不卡在线视频| 精品裸体舞一区二区三区| 久久激情综合网| 精品国产一区二区三区久久久蜜月| 免费不卡在线观看| 久久嫩草精品久久久精品| 国产福利一区二区三区视频| 国产三级欧美三级日产三级99| 国产成人免费视频精品含羞草妖精| 国产色产综合色产在线视频| 丰满少妇在线播放bd日韩电影| 中文字幕中文在线不卡住| 99久久国产免费看| 亚洲一区在线观看网站| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 日本亚洲三级在线| 精品国产区一区| 国产成人午夜精品影院观看视频 | 亚洲日韩欧美一区二区在线| 91精品办公室少妇高潮对白| 亚洲成人av中文| 精品三级在线观看| 成人小视频免费在线观看| 亚洲三级电影网站| 欧美一区二区精美| 国产黄色91视频| 亚洲激情图片一区| 欧美mv和日韩mv的网站| www.亚洲色图.com| 亚洲网友自拍偷拍| 亚洲精品在线免费播放|