数学建模社区-数学中国

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

作者: 帝通    时间: 2014-12-15 16:55
标题: 两个多项式相加怎么用c预言编写
速求啊,有知道的大神吗?8 }0 M% ^/ b% l

作者: 数学中国—罂粟    时间: 2014-12-15 18:00
#include<stdio.h>
5 Q: J: u5 a5 y* y, |#include<malloc.h>
1 t& O0 L, g. y" \, \2 Z* {typedef struct node
5 O! c: ?4 x- @7 z0 \{$ m4 ~4 H) ?/ F( D/ v0 A
float xi;
9 _! B8 S( ~3 f  J int n;
/ ~( r* H" V" i/ H. E struct node *next;. I  l6 e* A4 P) b; l
}term;- e# z9 ~) Y' F1 M
void sort(term *head)* H9 V: C8 P& t/ g
{
. u! W  y  \0 X term *p,*q,*s;$ w- u9 n4 [9 U' a
p=(term *)malloc(sizeof(term));, S& c/ B. g. t, D
q=(term *)malloc(sizeof(term));
; m( t4 H: y' Q2 }+ n* n3 N s=(term *)malloc(sizeof(term));) w  D8 \* u6 {# s
       p=head;
" f# [& O, g3 @1 g6 v- L" d/ l/ A    2 ~9 w0 d5 N5 h- p- c: }7 W$ P
while(p->next!=NULL): h& o9 y2 ^3 i( o, K( ~
{7 P1 |2 V; \: Q% Y9 B2 F# E
       s=p->next;$ h0 j( {$ L% k
while(s!=NULL)
1 |  ^2 h! ?( @0 C' ? {   
5 C2 O! Q' ]8 ~6 E$ h, k4 W: ?$ I    if(p->n>s->n)8 H1 `" H) A; D0 l1 ~# ]/ z5 p
   { $ D3 w" E- V+ B
    q->n=p->n;' k& x  v% k( G
     p->n=s->n;
9 B$ ^4 k  f- Q2 K) j     s->n=q->n;
4 f: I, |; w9 O1 U/ }9 `     q->xi=p->xi;
. O/ Y0 Q4 |$ ^7 F; e# [* N  p->xi=s->xi;  e1 V2 i* D5 F: G  c
  s->xi=q->xi;% V0 C, E5 m* E+ y6 D2 I
   }
8 @1 P$ E" B# v& I* W( A   s=s->next;% x5 p, }6 T4 j( c7 e- f6 ^
}
: M: b$ e: Y. h% L/ j( C. `; h p=p->next;2 X+ \/ a' |3 ?, r: {8 h
}: A1 b; U* O# P0 o4 @; c
}
: U* q8 O. B, f$ kterm *polynadd(term *head1,term *head2)
! V$ A: K1 _( z) Y( u; ~8 W, x{
. {) S& ~  `0 H1 x7 V( z) Y term *p,*q,*s,*r,*head3;
+ y! E. T, s+ O* p& U float x;
8 n2 z7 \8 A$ N: r1 }$ s p=head1->next;
9 L2 Z( d% _* W q=head2->next;
* ^4 X  p7 V+ R; W head3=(term *)malloc(sizeof(term));9 X" s  `- _6 ?6 @9 l) o
r=head3;: W) w' @) {; {, A4 R& T
while(p!=NULL&&q!=NULL)
( C- ^! U: L9 `# [! ] {' ^4 b( D! R' i7 r6 R- Q- }2 E) R
  if(p->n==q->n)" e5 _0 F3 [5 |, ]
  {
$ R: W- M  v0 [8 T6 [   x=p->xi+q->xi;
8 o4 D1 _  v5 P) M   if(x!=0)- l$ E0 r2 u) f" t
   {; z* U3 J* H, C$ x7 G* Y4 p( s
    s=(term *)malloc(sizeof(term));
+ ?% B$ {9 T. s$ p' S    s->xi=x;
* U( e4 O: r" @. j. |4 ~6 D    s->n=p->n;: v, V) h: P; N! w$ X/ y$ g
    r->next=s;
  u2 [/ G2 U- J* ?- A+ j4 |5 C    r=s;
  Q& x% s+ j" n   }
: L2 P* L/ i2 M$ H   p=p->next;8 M9 ~7 o5 G2 E* p, R( \$ G. ^$ T
   q=q->next;
" K- G% Z( L6 N6 Y" p5 z8 \  }6 `5 r. r9 W% b7 L2 p' l" W' C
  else if(p->n>q->n)
, ?/ F+ D! E8 ^) I0 Y3 V" m% A   {: w+ N; \3 C$ K* w8 R
    s=(term *)malloc(sizeof(term));
6 @$ O) ~; T# I% J    s->n=q->n;
$ E- p' q- b; w    s->xi=q->xi;; h0 q0 e( m; _- ~$ i+ J
    r->next=s;
( O3 y5 y& K$ _4 M    r=s;
7 B& v$ K6 h  l* P) g5 O- j) Z    q=q->next;/ \+ q% w4 f% m5 X; \7 w* ~# e
   }6 b3 a# y( O* I7 K2 g$ K
  else
/ u1 V* J4 V5 u" T# I; ]  {1 u0 y& ]  I! f5 e. \/ m
   s=(term *)malloc(sizeof(term));
8 l. n2 k% D2 z( F6 M! p) a; X. B7 [" Y/ o   s->n=p->n;7 r! x5 F- j; I9 v- B8 u' N
   s->xi=p->xi;) K- w" N1 @" o
   r->next=s;8 f( O  Z1 P7 ~5 j2 S+ P
   r=s;6 B8 q( G  t) @4 g$ |  ]$ ?" E
   p=p->next;& B" y  F0 t1 V, U3 n% w
  }- f2 ~  ?( a/ m6 L
    }7 n, i& k! K4 U$ G9 ]: m) K- F
  while(p!=NULL)
) _) K# Q$ ?+ T  {& S' M% {- Z) X2 ~2 q3 \1 i/ s
   s=(term *)malloc(sizeof(term));( Y, o4 L$ p8 G( O* }
   s->n=p->n;
( w6 I& O+ G$ e4 p   s->xi=p->xi;! f- v! h4 V; j. I
   r->next=s;
. G. v# l- G( n  u/ S. x   r=s;
$ R/ w8 o6 n( f# f   p=p->next;, S6 i  \4 ?. q, b; P2 a; x9 `; h
  }
6 F6 W! E/ f6 {; E  while(q!=NULL)# H/ {% h) N  D; f4 P
  {
# q* L7 N3 W- `1 a1 V   s=(term *)malloc(sizeof(term));* w5 ]& K. I0 _# X2 V1 C/ Y# n- c
   s->n=q->n;9 z8 W! G# V( v1 B* X6 i
   s->xi=q->xi;0 }7 W9 |, m: R2 a; E& l# _
   r->next=s;
6 g) }- @9 E$ e# ]9 }5 Y5 e' H5 O   r=s;
, Z. ~+ T9 O  r6 ?) t   q=q->next;. ^2 F0 l$ k8 ^
  }7 @" U# e. U6 k# K2 N) {$ z/ ?
  r->next=NULL;* C/ q  b0 U; ?. f# f
  return head3;
8 g. R0 ^/ K2 h1 S7 _                m  u7 l9 r6 U8 Z' J/ l
}
1 T6 z3 t3 y. N+ `2 {1 u6 ~3 zterm *createpolyn(int m)( `# G$ K+ G- s1 G
{
( g& y) @4 J# z. ]) V; @
5 K% P) X! ]# W5 F; Y* F) h term *p,*head,*q;) ]. J* l# O5 h, R% F& v5 L# i/ l& i
int i;1 X3 w6 _; K2 z! s2 M! f5 o, P) p+ i
    head=(term *)malloc(sizeof(term));
0 z7 ^6 I8 `2 y+ p4 _: h& p    q=head;! w8 k, f7 t4 \3 E7 `8 o% f# e4 {
for(i=0;i<m;i++)9 E$ c0 }8 Z7 n2 B! f7 @1 H
{
( C4 {" D7 O- q5 d  p=(term *)malloc(sizeof(term));
' m. U1 f3 K  j# ]" z  M  N  printf("请输入第%d项数的系数和指数\n",i+1);0 \6 B# X5 D1 B9 K
  scanf("%f%d",&p->xi,&p->n);
% W) }* u7 s6 T* O" [. ]  q->next=p;
7 ?% a3 U9 Y. K+ D  q=p;% L, j( C4 }* Y$ |. D. o
}3 [( I$ o! h  T. P& y4 |
    p->next=NULL;1 j8 G0 z9 k/ n( P
return head;3 d) j# `# ]( w. d! {& f4 P1 n
0 z! K5 F" d( V# [0 ]; t
}3 W/ g- m+ X; P+ F! u6 y
dayin(term *head)' T  V, u: i+ y1 i
{
5 `0 A- S; C6 {2 l; Q% y term *p,*q;
7 q. V3 j3 H* Q* M! q q=head->next;9 i7 o2 _& [* s# @9 `! h  N
       if(q->xi==0)
: \. T6 {) |, B8 h3 y4 `: {   printf("      ");
' T  U5 R5 X2 M8 \: D    if(q->n==0&&q->xi>0&&q->xi!=1)  T$ l. r/ {& z1 y  t! ^7 t
     printf("%0.2f",q->xi);5 d6 b, o8 h; e. Y; E; W
    if(q->n==0&&q->xi==1)- @; m% e' [& G: y$ r/ I7 y
     printf("1");
, Z7 ]: z) N6 u. x0 x& U: ~    if(q->n==0&&q->xi<0)8 C  m9 b9 P  d6 ~7 d( ~
     printf("%0.2f",q->xi);
( |  Z. J1 U, ]2 O. G) U- n    if(q->n==1&&q->xi==1)
- R/ ]! U% f  w) t- r     printf("x");
: T* J- C# c8 q8 j) l    if(q->n==1&&q->xi!=1&&q->xi>0)
; z  u4 s6 X, M9 u# d  t/ K     printf("%0.2fx",q->xi);
$ \& V6 ]7 ^% Y    if(q->n==1&&q->xi!=1&&q->xi<0)
% m; j8 b. h6 R" c; Z" _     printf("%0.2fx",q->xi);% F6 X/ \# p: o( H5 u5 h
    if(q->n!=1&&q->n!=0&&q->xi>0&&q->xi!=1)
8 ^% K/ `5 D$ d  _1 J. C' O% b; K! Q  a     printf("%0.2fx^%d",q->xi,q->n);" [' z& j3 u" e1 w1 c4 ^4 q. G4 D
    if(q->n!=1&&q->n!=0&&q->xi<0)
+ t. Q0 K; C' S1 S2 z9 l     printf("%0.2fx^%d",q->xi,q->n);
4 |9 v1 |: @2 m3 J    if(q->n!=0&&q->n!=1&&q->xi==1)9 `9 Q. r! |6 g' z4 r- e
     printf("x^%d",q->n);- y% T) V" y" x( u8 Z
    p=q->next;
5 M' F. X3 G( U, | while(p!=NULL)
+ I, x0 B5 Z: U: p/ W {- p% v& D  S) N0 Y: J
  if(p->xi==0)
4 v. a+ J! |2 C1 s) o) b8 H   printf("      ");1 \: x, \$ Z, P
    if(p->n==0&&p->xi>0&&p->xi!=1)& X2 A  a1 R( F& u( d
     printf("+%0.2f",p->xi);! _& j# |! U4 E7 I8 u
    if(p->n==0&&p->xi==1)
7 E& p  k  y! c0 L     printf("+1");
" K; `6 c% S4 f" {# B, Y    if(p->n==0&&p->xi<0)! g9 b8 Q5 S' h0 Q5 ]
     printf("%0.2f",p->xi);* B$ p2 x& n/ c+ U8 i
    if(p->n==1&&p->xi==1)
" E6 x8 I4 O( E9 K7 o     printf("+x");
9 j$ D/ P- u6 W- K1 a    if(p->n==1&&p->xi!=1&&p->xi>0)
5 s& ]3 x6 u- @, M% u+ Z. v7 s     printf("+%0.2fx",p->xi);  X% `- D, F9 J: k/ ^6 a8 f" \( o+ ^
    if(p->n==1&&p->xi!=1&&p->xi<0)
% ~0 b. f" c8 D2 L  H9 b% P     printf("%0.2fx",p->xi);
7 x. }) D- }+ g5 Y/ v    if(p->n!=1&&p->n!=0&&p->xi>0&&p->xi!=1)
$ x" p+ ?5 V- Z; }2 i* e+ [     printf("+%0.2fx^%d",p->xi,p->n);
; k  i* `- p# _  s9 |3 w    if(p->n!=1&&p->n!=0&&p->xi<0)
, L4 `1 r; V6 b7 c) j/ b1 M( _     printf("%0.2fx^%d",p->xi,p->n);4 a/ R7 Y1 [& q% P  z+ [
    if(p->n!=0&&p->n!=1&&p->xi==1)$ ]) P* K7 |! C5 }" G( J
     printf("+x^%d",p->n);/ F1 ^/ I+ y1 b
    p=p->next;
0 A  ~  C' [3 N& v2 m- d8 N }
* h' g9 _0 {$ c  Y: c' i; ]4 c4 v/ b printf("\n");$ l! I+ W+ K1 }  g7 b
}$ \  }2 m: M  ]. J7 r! ~
main(). {' e+ F/ k4 h  [& Z" _4 H
{* }* q! J% J1 ^1 [2 ~/ s' N/ [
   int i,j;; A( D2 J* F( ^
   term *head1,*head2,*head3;
" j* A- [  W2 Y8 |% d! L   printf("请输入第一个多项式的项数:\n");
! ^) s7 ~" W! O& i   scanf("%d",&i);, x$ S8 V0 h1 q- L; y; |) o! a  I% a8 h
   head1=createpolyn(i);2 J5 l" i/ o1 h! z
   sort(head1);$ n# C+ Y# Q( j1 Z0 a, Y7 S
   printf("\n");
" r" c. `, t" H+ i9 u( F6 ^5 O5 K- }   dayin(head1);
2 m6 @' D. [' G" l6 q3 |& l   printf("\n");
2 {! a; o) W9 L! ^' `   printf("请输入第二个多项式的项数:\n");/ n! l% p7 P5 v: C+ Z& q
   scanf("%d",&j);, P3 A/ a1 |# m2 q- o* t9 A4 [( y
   head2=createpolyn(j);
; s: h& k. |, t! z" [- V. `   sort(head2);
$ r* m+ f! v/ l3 o0 m" |) m6 Q   printf("\n");
3 s0 N0 {7 c5 x) }0 F   dayin(head2);
! q9 o% a# V' L- X   printf("\n\n");
" F+ H7 I+ }2 e, B, F4 m+ C0 X   head3=polynadd(head1,head2);
0 m4 {# I: g5 i6 g9 C6 v   sort(head3);
) q+ m6 J$ @! Y4 r   printf("\n");; T0 Q( g/ u% O5 s7 f$ S8 S
   dayin(head3);
. L( a5 K& Q! d: \   printf("\n");7 k0 X3 d1 H+ O$ ^8 f1 K; L# `% T2 e
}
& h# e( L, O2 z  g: d
作者: 帝通    时间: 2014-12-16 08:25
数学中国—罂粟 发表于 2014-12-15 18:00
( K/ V8 }0 o8 D% S7 l#include. f& z8 Y' r% C
#include
) V- l9 w/ y  Mtypedef struct node
" [1 k0 o+ @; O1 x7 A
能不能给个文档,我下载下来,谢谢4 k; Y. I: S8 k3 E

作者: 慢跑20    时间: 2015-3-21 11:03
链表,感谢楼上的分享呀。
' M+ G  V, {0 T




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