数学建模社区-数学中国

标题: 两个多项式相加怎么用c预言编写 [打印本页]

作者: 帝通    时间: 2014-12-15 16:55
标题: 两个多项式相加怎么用c预言编写
速求啊,有知道的大神吗?( C: T) r) y: e; w! Q0 K

作者: 数学中国—罂粟    时间: 2014-12-15 18:00
#include<stdio.h>5 V* i/ z+ z9 ^
#include<malloc.h>
6 |/ J7 _! I' n6 b  j' N/ utypedef struct node
0 G- p- F7 h' u% Y) ~' o{$ H6 o2 l2 b$ m* A
float xi;
' H( t/ C8 v6 f) \. l int n;2 I4 e$ c# I/ ]$ O
struct node *next;
, `* q" h% `' R$ J6 Y8 c" Q}term;2 l7 Y0 J; v1 ]5 p+ p) A& b! _
void sort(term *head)
' }' k% ?3 A5 Z: N; o+ ~9 ?% j: M{, X' k# ~( V, y) T1 Q6 \
term *p,*q,*s;
0 E$ \5 g. p* n; u p=(term *)malloc(sizeof(term));! m, }4 v6 R' q4 J0 j' b8 C
q=(term *)malloc(sizeof(term));
8 F# f0 Y$ a$ _7 [0 G s=(term *)malloc(sizeof(term));
# p4 ]7 C; r$ q; `  o       p=head;
5 o8 j5 i0 b$ a7 ?5 i1 L   
% [( W" u* M* ?" W# M5 d while(p->next!=NULL)1 Z7 ]% U  _5 s! U) u- u
{
3 M- t/ G  P4 P& r       s=p->next;
/ T, O% R2 i+ ]) ], w# j: Z while(s!=NULL)' X! i/ Y$ }0 l3 J
{   
4 ?; e$ Z& r8 _5 `    if(p->n>s->n)1 ]" k* }9 e+ f, r( r; O1 K
   { - C5 k+ z. u1 o, n$ O9 Q+ Y- C- g4 @
    q->n=p->n;- `9 Z" H# k) G7 b
     p->n=s->n;9 h) n, Y& ^& S! e( e! S" a( r6 O
     s->n=q->n;( t- v1 y/ Q0 o; Q, [6 a
     q->xi=p->xi;4 b; ^$ Q( S  H# S" ?7 [) L
  p->xi=s->xi;# u3 v6 E  e9 t
  s->xi=q->xi;
* ]7 o0 `/ v6 {2 K4 M   }. @0 `/ ~% S0 l% B7 s
   s=s->next;
6 O1 m6 z2 n# \0 H }
' @6 y5 {+ z- [/ Z5 Y/ b p=p->next;) w! {. [, D0 u1 t/ A7 o- ?2 g$ E- Z
}
+ R! ]6 p5 |8 @( X; j  ]+ J& t( p0 s}3 R1 O& ^: L- d) ?1 }6 c/ f
term *polynadd(term *head1,term *head2)
2 c. H9 a" X8 ^- j9 s9 o" b{! T$ l, M' ^; a) M
term *p,*q,*s,*r,*head3;
& _* \9 n) @; l# x float x;
3 g# I/ V$ T5 B9 O, f2 z. M; g- G p=head1->next;
7 L$ v3 \6 M- A" S# x q=head2->next;
$ i- K0 {2 L1 R4 [) r1 H- x head3=(term *)malloc(sizeof(term));! \4 ?8 i, I% r: b5 ?7 d
r=head3;: z* @. x) w" k+ K
while(p!=NULL&&q!=NULL)
! P, [8 V8 C3 v1 F3 W6 d {5 W: g7 a+ m, p( Y
  if(p->n==q->n); u1 s, ~, k& N2 B9 s
  {
2 m4 `$ k+ r2 `/ V  L- @1 |+ N   x=p->xi+q->xi;
4 a( F% n* r4 F" M   if(x!=0)$ u) Q1 ]' p* A
   {
) |! P, y+ o' D9 E& a    s=(term *)malloc(sizeof(term));
  ^2 \. a+ ?, w    s->xi=x;$ [7 S. f- z' Z2 m
    s->n=p->n;6 y1 b0 T9 v0 i2 s' C$ j
    r->next=s;
- q* H# v* J+ u' W8 {! h5 _) F    r=s;
) R8 D9 L4 Q+ G6 J! f$ i   }1 h7 m* ~- ^9 M$ E% N
   p=p->next;3 n3 V4 ]; L. ^/ B% z" |$ w
   q=q->next;
4 L. m& \2 Z% L8 k  }
& g0 m4 W+ j4 q4 R7 N' Y& Y* t  else if(p->n>q->n)
, @4 U* j5 g/ i- [% c) ~5 x   {
( h, J7 V! t' g0 ~& `/ ]& W8 H# A& h    s=(term *)malloc(sizeof(term));8 W, I- x2 q8 A& e9 b
    s->n=q->n;( ]; P+ v3 @$ U+ ]1 S8 I
    s->xi=q->xi;8 c% }4 j% a% U6 {
    r->next=s;# O* l- c  W0 {& G# i
    r=s;% b3 H9 q. [" v
    q=q->next;4 |4 Z1 {& W" I* P
   }  w6 T8 [3 H$ J# i1 y
  else0 J( W7 \5 W" Z1 V: Z
  {/ O  @! D, s8 z/ ?& O% l6 K
   s=(term *)malloc(sizeof(term));' Q# B% h: O0 i8 _2 `' g6 O; H
   s->n=p->n;  @  h  W6 ~* m5 O
   s->xi=p->xi;% d8 Q! I3 R1 Q
   r->next=s;
' K- r+ @1 F+ @; L/ o" O: C   r=s;
; ]2 c( F8 {. R" C, T* k' Q   p=p->next;/ q) |+ P' n, p8 w
  }* Q* v2 M6 N, s
    }
/ V) S$ \8 \# m3 h4 a+ F& S5 r& |  while(p!=NULL)
6 h) @5 C. q; E0 y2 V  {" `/ s3 `. S- _
   s=(term *)malloc(sizeof(term));% \/ O/ j- }0 i2 f' n
   s->n=p->n;
& Z' K9 d$ G4 r, p8 P+ T   s->xi=p->xi;
4 o  @4 N. H* n4 @   r->next=s;/ ], Y+ x" ?- i, C
   r=s;; y+ Q5 Q# M: G% h( |) v
   p=p->next;* j# R0 @7 p4 C+ V/ U
  }
; K6 v7 y7 T, x: r  while(q!=NULL)
6 J, D9 H7 q4 F$ J) J  {! [/ S! D4 H( Y% ~
   s=(term *)malloc(sizeof(term));. P) \* s8 b4 G( T. W4 Z' O& f
   s->n=q->n;8 P* ~# e% N; Q. |) D
   s->xi=q->xi;
) F+ A( c9 d1 p+ ]3 Z. }& ^/ @: F   r->next=s;. K! H- M  B, K! R( _% {6 M
   r=s;! _) _4 r4 ]0 _
   q=q->next;+ r/ Q3 H" c9 U  O' f6 ]$ a
  }- o( H3 q6 L; n" L( P- X4 R! _
  r->next=NULL;% D* ]. v* |5 s- c
  return head3;( ]* R; X* D- t; k, ?
              
5 T+ C. r6 s" e: {" c) }}
2 L: Z/ Y, _# {5 @term *createpolyn(int m). h+ E$ s1 y: D2 |9 H3 I6 ?: N/ ?
{; N9 {( M; U8 X% l  c5 Q5 M' Y8 `

  r3 A* g  B7 [1 V term *p,*head,*q;
6 f5 u; W# a- ] int i;
# ^6 o+ N; T# ?4 K, z    head=(term *)malloc(sizeof(term));# P2 |5 H$ x* A% Y4 C, j
    q=head;2 F$ p7 g# I' J0 T" p- w$ u
for(i=0;i<m;i++)2 ?& Q: r  `) z! t
{
/ `4 N6 q: j8 `$ ^  p=(term *)malloc(sizeof(term));( I1 o- B4 c3 U5 u
  printf("请输入第%d项数的系数和指数\n",i+1);- Z7 ]& R) J4 Z1 @# i  m
  scanf("%f%d",&p->xi,&p->n);' r8 G) e! g2 c0 [6 O, _
  q->next=p;
) |  d7 c) m3 o  q=p;3 j' d) i' o% r& t. H: X
}5 ?: q3 P1 \0 A5 ]& }! |
    p->next=NULL;9 R2 r8 W1 \1 r0 H3 }
return head;
9 ~0 E  p# S/ ~+ e- E7 \
4 G) s2 P1 X3 M}
1 |; }5 L" S. T: X8 q3 U0 t3 vdayin(term *head)
4 I4 s" W5 M. s  G' n9 P{( F: N+ S( L+ |5 o& z8 n
term *p,*q;+ g$ n/ O7 z% L
q=head->next;
9 \% J5 I' i- _, i9 y+ l4 I+ R       if(q->xi==0)/ O9 U- v, m3 G  F8 a# k
   printf("      ");
, E- G. H; X$ z    if(q->n==0&&q->xi>0&&q->xi!=1)& h/ Q9 }2 G6 m
     printf("%0.2f",q->xi);4 G3 }* E/ d3 v: l# w  O
    if(q->n==0&&q->xi==1)% d  L6 J. `4 ]2 b0 J' f
     printf("1");2 v4 c. f4 Z5 e! F6 v
    if(q->n==0&&q->xi<0)$ p! _/ g$ w/ c. ]. W
     printf("%0.2f",q->xi);
0 [3 }; _6 _  s; G- v1 B3 w- Q$ ^; H% G    if(q->n==1&&q->xi==1)5 y3 \$ L* E& G8 O4 D( e% E( y
     printf("x");* `1 R1 |* T9 K
    if(q->n==1&&q->xi!=1&&q->xi>0)) a+ A% r: z1 G+ \
     printf("%0.2fx",q->xi);1 B0 Z9 j4 F& b2 P* q% ]2 X
    if(q->n==1&&q->xi!=1&&q->xi<0)
$ n4 q* P" \- e. C     printf("%0.2fx",q->xi);, F( r3 t5 O( H; d
    if(q->n!=1&&q->n!=0&&q->xi>0&&q->xi!=1), {5 k' S+ c' T( \! l% y$ U( N
     printf("%0.2fx^%d",q->xi,q->n);. S$ q! ]- i! i5 u+ d. n( b% u
    if(q->n!=1&&q->n!=0&&q->xi<0)7 J8 a/ j, ~0 z! q
     printf("%0.2fx^%d",q->xi,q->n);
% J& H6 W, E; i1 |! ~7 y5 C) B    if(q->n!=0&&q->n!=1&&q->xi==1)
9 Z$ a6 C! D; k* H. p+ @; d$ r7 \     printf("x^%d",q->n);
6 h1 @9 Z4 l1 w& s9 v: }* o( N0 ?    p=q->next;
- \8 u- d9 V' ^3 i  r* x" U while(p!=NULL)
/ T, m4 m" a! F9 U" F* g {, F( l+ g: R! N$ q
  if(p->xi==0)
. P* B9 H4 `7 T0 Z0 ?0 C' u6 K6 B   printf("      ");- s8 d; J- H3 M& B
    if(p->n==0&&p->xi>0&&p->xi!=1)
4 j# |  E% h" x8 u7 N4 d- F! y# P' @) e     printf("+%0.2f",p->xi);
; A9 P  h6 N5 D& D0 o2 U' X& ~    if(p->n==0&&p->xi==1)8 V! S9 {7 C1 D" L4 K# C# k
     printf("+1");6 H. K/ n. H1 p# `# |& ]- o( p3 s! f0 ]
    if(p->n==0&&p->xi<0)
  c! b  O+ k. e' W+ l" h& C. b     printf("%0.2f",p->xi);4 d' U$ ^/ V) t5 x- ]
    if(p->n==1&&p->xi==1)" x7 N7 |; t; E+ P$ Z
     printf("+x");
- G9 {6 H2 b. @" x) Q    if(p->n==1&&p->xi!=1&&p->xi>0)
4 v! s& r3 L% }* H6 z     printf("+%0.2fx",p->xi);
5 h2 X9 [1 P  V4 l    if(p->n==1&&p->xi!=1&&p->xi<0)
+ G' R0 \, S+ D% r, D, Z* {     printf("%0.2fx",p->xi);
) A6 i5 O# y2 ~1 V5 X1 p    if(p->n!=1&&p->n!=0&&p->xi>0&&p->xi!=1)
  ~" V* \0 X% y5 ]/ ?     printf("+%0.2fx^%d",p->xi,p->n);
# j& B8 `; M% L4 p  T    if(p->n!=1&&p->n!=0&&p->xi<0)
. l  P. x! b9 x$ i! f0 c     printf("%0.2fx^%d",p->xi,p->n);+ V' M/ Y- Z: d9 S4 e# X
    if(p->n!=0&&p->n!=1&&p->xi==1)
: d* e: B! x: m1 d     printf("+x^%d",p->n);2 e1 _$ c  C0 n" @
    p=p->next;
' e1 @+ m5 d# b9 {+ _* L }2 m1 @" l2 K+ l: m$ E0 ^
printf("\n");) \3 W1 x8 _9 i! G: T, @
}
& D4 d. [" b1 T6 B6 n; Y+ v& t4 Fmain()
( Y6 |6 Z* h' l4 X{
% j# F) r% I' ]/ \$ w: ]$ m4 b   int i,j;' {* d, h$ c7 @, P% X8 o
   term *head1,*head2,*head3;
; T% @+ I& \$ A# c   printf("请输入第一个多项式的项数:\n");
* r+ Q2 X% l. H. X* G   scanf("%d",&i);. Y8 P) _* {" ^3 M. S, H/ C; [
   head1=createpolyn(i);7 `2 l; T  L0 w
   sort(head1);* R' Y! A4 ~5 d+ o! n: j3 B1 Q
   printf("\n");3 }9 x/ E: s; o/ B6 q; h' Q% W
   dayin(head1);
# U& Z* G2 q9 T4 m3 H" s+ d   printf("\n");
6 C, I( F/ q: f3 l; \3 _   printf("请输入第二个多项式的项数:\n");( ?, S1 o& Z( x- P6 W" w
   scanf("%d",&j);
5 w* |( ?3 h+ Z& F; k. |, X   head2=createpolyn(j);
  f4 K8 Y/ Q' k6 X1 x9 Y5 t; b   sort(head2);
6 X- @4 B3 |* a  ~) m) y3 ?' b- G   printf("\n");: r. q! l5 r" M" \) c
   dayin(head2);! ~( N5 }$ c, ?* x$ \( P+ P1 c
   printf("\n\n");3 r) H- G/ G/ g
   head3=polynadd(head1,head2);1 b' s; ]0 d( [( B' {1 k9 _
   sort(head3);
* L' |) A9 \7 x; J& q5 L   printf("\n");
! W$ P" V+ H4 \& y9 @+ v* B   dayin(head3);
3 b& N6 p% r3 `+ s" x7 k   printf("\n");7 K: ~% l( V: a! D1 R
}
: Q- c& [7 A5 b. R0 Y6 W
作者: 帝通    时间: 2014-12-16 08:25
数学中国—罂粟 发表于 2014-12-15 18:00
$ V4 X1 Y+ F, R#include
9 H' E" p* ?+ p7 J/ M" a% @#include
* j. V  b, L! a" O4 y( ?typedef struct node

, c5 Z1 n0 w8 L' _) ?$ ~- ]3 p能不能给个文档,我下载下来,谢谢' `0 d/ T$ P0 u) C

作者: 慢跑20    时间: 2015-3-21 11:03
链表,感谢楼上的分享呀。
) k% p" C  Z* G5 E- \




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5