生活随笔
收集整理的這篇文章主要介紹了
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
;
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;
}
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");
}
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
; while(pa
&&pb
){ if(pa
->expn
< pb
->expn
){ pc
->next
= pa
; pc
= pa
; pa
= pa
->next
; } else if (pa
->expn
> pb
->expn
){ pc
->next
= pb
; pc
= pb
; pb
= pb
->next
; } else{ 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
); printf("非遞減輸入多項式hb, "); CreatePolyn(hb
,a
); 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语言——一元多项式定义求和 [单链表] (数据结构)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。