<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 251  文章 - 504  trackbacks - 0
    <2006年10月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    本博客系個人收集材料及學(xué)習(xí)記錄之用,各類“大俠”勿擾!

    留言簿(14)

    隨筆分類

    收藏夾

    My Favorite Web Sites

    名Bloger

    非著名Bloger

    搜索

    •  

    積分與排名

    • 積分 - 202516
    • 排名 - 285

    最新評論

    要求:
    1? 輸入并建立多項式
    2? 輸出多項式,輸出形式外為整數(shù)序列:c1,e1;c2,e2;.......cn,en;其中n為多項式的項數(shù),ci和ei分別為第i項的系數(shù)和指數(shù),序列按指數(shù)降序排列
    3? 多項式a和b相加,建立多項式a+b
    4? 多項式a和b相減,建立多項式a-b
    代碼如下:
    #include<stdio.h>
    #include<malloc.h>
    #define MAX 20? //多項式最多項數(shù)
    typedef struct? //定義存放多項式的數(shù)組類型
    {
    ? float coef;?? //系數(shù)
    ? int exp;????? //指數(shù)
    }PolyArray[MAX];
    typedef struct pnode? //定義單鏈表結(jié)點類型
    {
    ? float coef;???????? //系數(shù)
    ? int exp;??????????? //指數(shù)
    ? struct pnode *next;
    }PolyNode;

    void DispPoly(PolyNode *L)? //輸出多項式
    {
    ?PolyNode *p=L->next;
    ?while (p!=NULL)
    ?{
    ? printf("%g,%d;",p->coef,p->exp);
    ? p=p->next;
    ?}
    ?printf("\n");
    }
    void CreateListR(PolyNode * &L,PolyArray a,int n)??? //尾插入法建表
    {
    ?PolyNode *s,*r;int i;
    ?L=(PolyNode *)malloc(sizeof(PolyNode));????????? //創(chuàng)建頭結(jié)點
    ?L->next=NULL;
    //?L->exp=n;
    // printf("%d\n",L->exp);
    ?r=L;??????????????????????????????????????????? //r始終指向終端結(jié)點,開始時指向頭結(jié)點
    ??for(i=0;i<n;i++)
    ??{
    ??? s=(PolyNode *)malloc(sizeof(PolyNode));?? //創(chuàng)建新結(jié)點
    ??? s->coef=a[i].coef;
    ??? s->exp=a[i].exp;
    ??? r->next=s;?????????????????????????????? //將*s插入*r之后
    ??? r=s;
    ??}
    ??r->next=NULL;?????????????????????????????? //將終端結(jié)點next域置為NULL
    }
    void Sort(PolyNode * &head)???????????????????????? //按exp域的值遞減排序
    {
    ? PolyNode *p=head->next,*q,*r;
    ? if(p!=NULL)????????????????????????????????????? //當(dāng)原單鏈表不為空時
    ? {
    ?? r=p->next;???????????????????????????????????? //r保存*p結(jié)點后繼結(jié)點的指針
    ?? p->next=NULL;????????????????????????????????? //構(gòu)造只含一個數(shù)據(jù)結(jié)點的有序表
    ?? p=r;
    ?? while(p!=NULL)
    ?? {
    ???? r=p->next;?????????????????????????????????? //r保存*p結(jié)點后繼結(jié)點的指針
    ? q=head;
    ? while(q->next!=NULL && q->next->exp>p->exp)
    ?? q=q->next;?????????????????????????????? //在有序表中找插入*p的前驅(qū)結(jié)點*q
    ? p->next=q->next;???????????????????????????? //將*p插入到*q之后
    ? q->next=p;
    ? p=r;
    ?? }
    ? }
    }
    void Add(PolyNode *ha,PolyNode *hb,PolyNode *&hc)//求兩個有序表的并
    {
    ? PolyNode *pa=ha->next,*pb=hb->next,*s,*tc;
    ? float c;
    ? hc=(PolyNode *)malloc(sizeof(PolyNode));?????????? //創(chuàng)建頭結(jié)點
    ? tc=hc;
    ? while(pa!=NULL && pb!=NULL)
    ? {
    ??? if(pa->exp>pb->exp)
    ?{
    ?? s=(PolyNode *)malloc(sizeof(PolyNode));??????? //復(fù)制結(jié)點
    ?? s->exp=pa->exp;s->coef=pa->coef;
    ?? tc->next=s;tc=s;
    ?? pa=pa->next;
    ?}
    ?else if(pa->exp<pb->exp)
    ?{
    ? s=(PolyNode *)malloc(sizeof(PolyNode));?????????? //復(fù)制結(jié)點
    ? s->exp=pb->exp;s->coef=pb->coef;
    ? tc->next=s;tc=s;
    ? pb=pb->next;
    ?}
    ?else???????????????????????????????????????????? //pa->exp=pb->exp時
    ?{
    ?c=pa->coef+pb->coef;
    ?if(c!=0)????????????????????????????????????????? //系數(shù)之和不為0時創(chuàng)建新結(jié)點
    ?{
    ?? s=(PolyNode *)malloc(sizeof(PolyNode));???
    ?? s->exp=pa->exp;s->coef=c;
    ?? tc->next=s;tc=s;
    ?}
    ?pa=pa->next;
    ?pb=pb->next;
    ?}

    ? }
    ? if(pb!=NULL)???????????????????????????????????? //復(fù)制余下結(jié)點
    ?? pa=pb;
    ? while(pa!=NULL)
    ? {
    ??? s=(PolyNode *)malloc(sizeof(PolyNode));?????????? //復(fù)制結(jié)點
    ?s->exp=pa->exp;s->coef=pa->coef;
    ?tc->next=s;tc=s;
    ?pa=pa->next;
    ? }
    ? tc->next=NULL;
    }

    void Subs(PolyNode *ha,PolyNode *hb,PolyNode *&hc)?? //求兩個有序表的差
    {
    ? PolyNode *pa=ha->next,*pb=hb->next,*s,*tc;
    ? float c;
    ? hc=(PolyNode *)malloc(sizeof(PolyNode));?????????? //創(chuàng)建頭結(jié)點
    ? tc=hc;
    ? while(pa!=NULL && pb!=NULL)
    ? {
    ??? if(pa->exp>pb->exp)
    ?{
    ?? s=(PolyNode *)malloc(sizeof(PolyNode));??????? //復(fù)制結(jié)點
    ?? s->exp=pa->exp;s->coef=pa->coef;
    ?? tc->next=s;tc=s;
    ?? pa=pa->next;
    ?}
    ?else if(pa->exp<pb->exp)
    ?{
    ? s=(PolyNode *)malloc(sizeof(PolyNode));?????????? //復(fù)制結(jié)點
    ? s->exp=pb->exp;s->coef=-pb->coef;???????????????? //如果前個多項式中的指數(shù)小于后個多項式指數(shù)加上負號
    ? tc->next=s;tc=s;
    ? pb=pb->next;
    ?}
    ?else???????????????????????????????????????????? //pa->exp=pb->exp時
    ?{
    ?c=pa->coef-pb->coef;
    ?if(c!=0)????????????????????????????????????????? //系數(shù)之差不為0時創(chuàng)建新結(jié)點
    ?{
    ?? s=(PolyNode *)malloc(sizeof(PolyNode));???
    ?? s->exp=pa->exp;s->coef=c;
    ?? tc->next=s;tc=s;
    ?}
    ?pa=pa->next;
    ?pb=pb->next;
    ?}

    ? }
    ? if(pb!=NULL)???????????????????????????????????? //復(fù)制余下結(jié)點
    ?? pa=pb;
    ? while(pa!=NULL)
    ? {
    ??? s=(PolyNode *)malloc(sizeof(PolyNode));?????????? //復(fù)制結(jié)點
    ?s->exp=pa->exp;s->coef=pa->coef;
    ?tc->next=s;tc=s;
    ?pa=pa->next;
    ? }
    ? tc->next=NULL;
    }
    void main()
    {
    ?? PolyNode *ha,*hb,*hc;
    ?? //PolyArray a={{1.2,0},{2.5,1},{3.2,3},{-2.5,5}};
    ?? //PolyArray b={{-1.2,0},{2.5,1},{3.2,3},{2.5,5},{5.4,10}};
    ?? int m=4,n=5;
    ?? PolyArray a,b;
    ?? for(int i=0;i<m;i++)
    ?? {
    ???? printf("請輸入A多項式中第%d項的系數(shù)和指數(shù)",i);
    ? scanf("%f%d",&a[i].coef,&a[i].exp);
    ?? }
    ?
    ??? for(int j=0;j<n;j++)
    ?? {
    ???? printf("請輸入B多項式中第%d項的系數(shù)和指數(shù)",j);
    ? scanf("%f%d",&b[j].coef,&b[j].exp);
    ?? }

    ?? CreateListR(ha,a,4);
    ?? CreateListR(hb,b,5);
    ?? printf("原來A:\n");DispPoly(ha);
    ?? printf("原來B:\n");DispPoly(hb);

    ?? Sort(ha);
    ?? Sort(hb);
    ?? printf("排序后A:\n");DispPoly(ha);
    ?? printf("排序后B:\n");DispPoly(hb);

    ?? Add(ha,hb,hc);
    ?? printf("相加后:\n");DispPoly(hc);
    ?? Subs(ha,hb,hc);
    ?? printf("相減后:\n");DispPoly(hc);
    }

    posted on 2006-10-04 16:18 matthew 閱讀(4421) 評論(5)  編輯  收藏 所屬分類: 數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計

    FeedBack:
    # re: 數(shù)據(jù)結(jié)構(gòu)之線性表- 一元稀疏多項式計算器 2007-01-10 10:14 學(xué)生
    是代碼啊,可惜不是程序!  回復(fù)  更多評論
      
    # re: 數(shù)據(jù)結(jié)構(gòu)之線性表- 一元稀疏多項式計算器[未登錄] 2007-06-06 18:05 呵呵
    謝謝了大哥  回復(fù)  更多評論
      
    # re: 數(shù)據(jù)結(jié)構(gòu)之線性表- 一元稀疏多項式計算器 2007-12-21 10:32 紅源
    一定要謝謝你,本公子是菜鳥,數(shù)據(jù)結(jié)構(gòu)不及格,真是郁悶呀,謝謝大俠啦,我一定好好研究的,絕不是照抄  回復(fù)  更多評論
      
    # re: 數(shù)據(jù)結(jié)構(gòu)之線性表- 一元稀疏多項式計算器[未登錄] 2008-03-30 14:49 Alec
    狂頂你................................  回復(fù)  更多評論
      
    # re: 數(shù)據(jù)結(jié)構(gòu)之線性表- 一元稀疏多項式計算器 2008-11-18 22:06 煩死數(shù)據(jù)結(jié)構(gòu)
    好感動 嗚嗚TT
    終于讓我找到了
    我會好好看滴
    謝謝  回復(fù)  更多評論
      
    主站蜘蛛池模板: 一个人在线观看视频免费| 九月婷婷亚洲综合在线| 亚洲aⅴ天堂av天堂无码麻豆| 免费h黄肉动漫在线观看| 中文字幕免费在线看线人动作大片 | 日韩亚洲变态另类中文| 国产黄色免费网站| 又大又硬又粗又黄的视频免费看| 久久亚洲免费视频| 国产乱人免费视频| 91短视频免费在线观看| eeuss免费天堂影院| 久久夜色精品国产噜噜亚洲a| 久久久久久久亚洲精品| 成年女人看片免费视频播放器| eeuss免费影院| 亚洲乱码av中文一区二区| 亚洲人成精品久久久久| 成在线人永久免费视频播放| 久久中文字幕免费视频| 成人嫩草影院免费观看| 国产 亚洲 中文在线 字幕| 亚洲AV午夜成人影院老师机影院| 国产乱子影视频上线免费观看| 亚洲免费网站在线观看| 青柠影视在线观看免费| 国产午夜亚洲精品不卡| 亚洲人成网站在线观看播放动漫| 亚洲精品无码久久久久sm| 国产精品冒白浆免费视频| 18勿入网站免费永久| 久草免费手机视频| 中国国语毛片免费观看视频| 天天综合亚洲色在线精品| 亚洲香蕉在线观看| 亚洲男人电影天堂| 亚洲小视频在线观看| 亚洲精品无码av人在线观看| 亚洲精品黄色视频在线观看免费资源| 国产成人A在线观看视频免费| 亚洲成人免费网址|