<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ù)  更多評論
      
    主站蜘蛛池模板: 日韩欧毛片免费视频| 亚洲无删减国产精品一区| h片在线免费观看| 好吊色永久免费视频大全| 2020亚洲男人天堂精品| 亚洲男人第一av网站| 亚洲日本中文字幕天堂网| 在线A级毛片无码免费真人| 亚洲精品免费视频| baoyu777永久免费视频| 黄色三级三级免费看| 亚洲综合激情五月色一区| 亚洲精品中文字幕无乱码| 精品国产综合成人亚洲区| 中文字幕亚洲一区二区三区| 国产男女猛烈无遮挡免费视频网站| 丁香花免费高清视频完整版| 最近中文字幕高清免费中文字幕mv| 最好免费观看高清在线| 91免费在线视频| 成年女人A毛片免费视频| 天堂亚洲免费视频| 一道本不卡免费视频| 人人公开免费超级碰碰碰视频 | 日本免费污片中国特一级| 国产免费一级高清淫曰本片| 免费人成视频在线观看免费| 亚洲精品久久无码av片俺去也| 久久乐国产综合亚洲精品| 亚洲午夜久久久久久尤物| 亚洲人成网站在线观看播放动漫 | 岛国岛国免费V片在线观看 | 亚洲福利中文字幕在线网址| 免费国产精品视频| 免费在线观看黄色毛片| 免费人成在线观看网站视频 | 九九免费精品视频在这里| 一级毛片视频免费观看| 免费无码又爽又刺激高潮软件| 全免费a级毛片免费看| 日韩精品内射视频免费观看|