精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • 一元稀疏多項式簡單的計算器

    一元稀疏多項式簡單的計算器
    其他人氣:452 ℃時間:2020-06-11 03:37:34
    優(yōu)質(zhì)解答
    一元稀疏多項式計算器設(shè)計程序代碼
    #include
    #include
    #include
    #include
    #define maxlen 10
    #define large 999
    typedef struct Linklistomial{
    float coef;
    int expn;
    struct Linklistomial *next;
    }Linklistomial,*Linklist;
    void Insert(Linklist p,Linklist h){
    if(p->coef==0) free(p);//系數(shù)為0的話釋放結(jié)點
    else
    {
    Linklist q1,q2;
    q1=h;
    q2=h->next;
    while(q2&&p->expnexpn) { //查找插入位置
    q1=q2;
    q2=q2->next;
    }
    if(q2&&p->expn==q2->expn) {//將指數(shù)相同相合并
    q2->coef+=p->coef;
    free(p);
    if(!q2->coef) {//系數(shù)為0的話釋放結(jié)點
    q1->next=q2->next;
    free(q2);
    }
    }
    else {//指數(shù)為新時將結(jié)點插入
    p->next=q2;
    q1->next=p; }
    }
    }
    Linklist CreateLinklist(Linklist head,int m){
    //建立一個頭指針為head、項數(shù)為m的一元多項式
    int i;
    Linklist p;
    p=head=(Linklist)malloc(sizeof(struct Linklistomial));
    head->next=NULL;
    for(i=0;icoef,&p->expn);
    Insert(p,head); //調(diào)用Insert函數(shù)插入結(jié)點
    }
    return head;
    }
    void DestroyLinklist(Linklist p){ //銷毀多項式p
    Linklist q1,q2;
    q1=p->next;q2=q1->next;
    while(q1->next) {
    free(q1);
    q1=q2;
    q2=q2->next; }
    }
    void PrintLinklist(Linklist P){
    Linklist q=P->next;
    int flag=1; //項數(shù)計數(shù)器
    if(!q){ //若多項式為空,輸出0
    putchar('0');
    printf("\n");
    return;
    }
    while(q)
    {
    if(q->coef>0&&flag!=1) putchar('+'); //系數(shù)大于0且不是第一項
    if(q->coef!=1&&q->coef!=-1) {//系數(shù)非1或-1的普通情況
    printf("%g",q->coef);
    if(q->expn==1) putchar('X');
    else if(q->expn) printf("X^%d",q->expn);
    }
    else {
    if(q->coef==1)
    {
    if(!q->expn) putchar('1');
    else if(q->expn==1) putchar('X');
    else printf("X^%d",q->expn);
    }
    if(q->coef==-1)
    {
    if(!q->expn) printf("-1");
    else if(q->expn==1) printf("-X");
    else printf("-X^%d",q->expn);
    }
    }
    q=q->next;
    flag++;
    }
    printf("\n");
    }
    int compare(Linklist a,Linklist b){
    if(a&&b)
    {if(!b||a->expn>b->expn) return 1;
    else if(!a||a->expnexpn) return -1;
    else return 0;
    }
    else if(!a&&b) return -1;//a多項式已空,但b多項式非空
    else return 1;//b多項式已空,但a多項式非空
    }
    Linklist AddLinklist(Linklist pa,Linklist pb){//求解并建立多項式a+b,返回其頭指針
    Linklist qa=pa->next;
    Linklist qb=pb->next;
    Linklist headc,hc,qc;
    hc=(Linklist)malloc(sizeof(struct Linklistomial));//建立頭結(jié)點
    hc->next=NULL;
    headc=hc;
    while(qa||qb)
    {
    qc=(Linklist)malloc(sizeof(struct Linklistomial));
    switch(compare(qa,qb)){
    case 1:{
    qc->coef=qa->coef;
    qc->expn=qa->expn;
    qa=qa->next;
    break;}
    case 0: {
    qc->coef=qa->coef+qb->coef;
    qc->expn=qa->expn;
    qa=qa->next;
    qb=qb->next;
    break;
    }
    case -1: {
    qc->coef=qb->coef;
    qc->expn=qb->expn;
    qb=qb->next;
    break;}
    }
    if(qc->coef!=0)
    {
    qc->next=hc->next;
    hc->next=qc;
    hc=qc;
    }
    else free(qc);//當(dāng)相加系數(shù)為0時,釋放該結(jié)點
    }
    return headc;
    }
    int ValueLinklist(Linklist head,int x){
    //輸入x值,計算并返回多項式的值
    Linklist p;
    int i;
    int sum=0,t;
    for(p=head->next;p;p=p->next)
    {
    t=1;
    for(i=p->expn;i!=0;)
    {
    if(icoef*t;
    }
    return sum;
    }
    void xiang()
    {int m,n,a,x;
    char flag;
    Linklist pa=0,pb=0,pc;
    printf(" 歡迎使用多項式操作程序\n\n");
    printf("請輸入a的項數(shù):");
    scanf("%d",&m);
    pa=CreateLinklist(pa,m);//建立多項式a
    printf("請輸入b的項數(shù):");
    scanf("%d",&n);
    pb=CreateLinklist(pb,n);//建立多項式
    //輸出菜單
    printf(" \n");
    }
    int main(){
    int choice;
    menu();
    printf(" please make your choice:");
    scanf("%d",&choice);
    while(choice!=3)
    {
    switch(choice){
    case 1:system("cls");xiang();getch();break;
    case 2:system("cls");shu();getch();getch();break;
    default:printf(" please chooose the right choice!");getch();getch();break;
    }
    system("cls");
    menu();
    printf("please make your choice:");
    scanf("%d",&choice);
    }
    printf(" 謝謝使用該程序!\n");
    }
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點,以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機版