日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言——一元多项式定义求和 [单链表] (数据结构)

發布時間:2023/12/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言——一元多项式定义求和 [单链表] (数据结构) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 輸入多項式項數后,對多項式進行描述,將求兩個多項式和
  • 僅為demo基礎版,可拓展。
  • 單鏈表實現

#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef int ElemType; /*單項鏈表的聲明*/ typedef struct PolynNode{ int coef; // 系數 int expn; // 指數 struct PolynNode *next; }PolynNode,*PolynList; /*正位序(插在表尾)輸入n個元素的值,建立帶表頭結構的單鏈線性表*/ /*指數系數一對一對輸入*/ void CreatePolyn(PolynList &L,int n){ int i; PolynList p,q; L=(PolynList)malloc(sizeof(PolynNode)); // 生成頭結點 L->next=NULL; q=L; printf("成對輸入%d個數據\n",n); for(i=1;i<=n;i++){ p=(PolynList)malloc(sizeof(PolynNode)); scanf("%d%d",&p->coef,&p->expn); //指數和系數成對輸入 q->next=p; q=q->next; } p->next=NULL; } // 初始條件:單鏈表L已存在 // 操作結果: 依次對L的每個數據元素調用函數vi()。一旦vi()失敗,則操作失敗 void PolynTraverse(PolynList L,void(*vi)(ElemType, ElemType)){ PolynList p=L->next; while(p){ vi(p->coef, p->expn); if(p->next){ printf(" + "); //“+”號的輸出,最后一項后面沒有“+” } p=p->next; } printf("\n"); } /*ListTraverse()調用的函數(類型要一致)*/ void visit(ElemType c, ElemType e){ if(c != 0){ printf("%dX^%d",c,e); //格式化輸出多項式每一項 } } /* 多項式相加,原理:歸并 */ /* 參數:兩個已經存在的多項式 */ /* 返回值:歸并后新的多項式的頭結點 */ PolynList MergeList(PolynList La, PolynList Lb){ PolynList pa, pb, pc, Lc; pa = La->next; pb = Lb->next; Lc = pc = La; // 用La的頭結點作為Lc的頭結點 while(pa&&pb){ if(pa->expn < pb->expn){ pc->next = pa; //如果指數不相等,pc指針連上指數小的結點, pc = pa; pa = pa->next; //指向該結點的指針后移 } else if (pa ->expn > pb->expn ){ pc->next = pb; //pc指針連上指數小的結點, pc = pb; pb = pb->next; //指向該結點的指針后移 } else{ //(pa ->expn = pb->expn ) pa->coef = pa->coef + pb->coef; //指數相等時,系數相加 pc->next = pa; pc = pa; pa = pa->next; //兩指針都往后移 pb = pb->next; } } pc->next = pa ? pa:pb; // 插入剩余段 return Lc; } int main(){ PolynList ha,hb,hc; int a;printf("請輸入多項式項數:\n");scanf("%d",&a);printf("非遞減輸入多項式ha, "); CreatePolyn(ha,a); // 正位序輸入n個元素的值 printf("非遞減輸入多項式hb, "); CreatePolyn(hb,a); // 正位序輸入n個元素的值 printf("\n"); printf("多項式ha :\n"); PolynTraverse(ha, visit); printf("\n"); printf("多項式hb :\n"); PolynTraverse(hb, visit); printf("\n"); printf("求和結果 :\n"); hc = MergeList(ha,hb); PolynTraverse(hc, visit); }

總結

以上是生活随笔為你收集整理的C语言——一元多项式定义求和 [单链表] (数据结构)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。