zoukankan      html  css  js  c++  java
  • 循环链表与稀疏多项式

    问题描述:

    以循环链表做稀疏多项式的存储结构,编写求其导函数的算法,要求利用原多项式中的结点空间存放其导函数,同时释放所有无用结点

    问题分析:

    导函数应该很熟悉,所以写这个算法应该较简单。

    稀疏多项式采用的循环链表存储结构定义为:

    Typedef struct PolyNode{

    PolyTerm data;

    Struct  PolyNode *next; }PolyNode,*PolyLink;

    Typedef  PolyLink LinkedPoly;

    Typedef struct {

    Int  coef;

    Int  exp;

    }PolyTerm;

    Status PolyDifferential(LinkedPoly &L)

    {

       LinkedPoly p,q,pt;

       Q=L;

       P=L->next;

      While(p!=L);

     {

     //如果指数为0,则该项将删除

      If(p->data.exp==0)

      {

         Pt=p;

         P=p->next;

         Q=p;

         Free(pt);

      }

     Else

     {

     P->data.coef=(p->data.coef)*(p->data.exp);

     P->data.exp--;

     Q=p;

     P=p->next;

     }

     }

    Return ok;

    }

     

    问题描述:将一个用循环链表表示的稀疏多项式分成两个仅含奇次项或偶次项,用原链表的结点空间

    问题分析:

    想到前面做的那个题没,差不多,解决方案,也是找到头结点后,然后判断,当是偶次项时,放在头结点的左面,对不?

    Status ListDivideInto2CL(LinkedPoly  &L, LinkedPoly  &L1)

    {

      LinkedPoly p,p1,q,pt;

      Q=L;

      P=L->next;

      P1=L1;

    While(p!=L)

    {

      If(p->data.exp%2==0)

      {

        Pt=p;//pt也可不需要的

        P=p->next;

        Q->next=p;//这相当与把此结点抽离出来了

     

      //然后将此结点给L1

       Pt->next=p1->next;

       P1->next=pt;

       P1=p1->next;

    }

     Else{

      Q=p;

      P=p->next;

      }

     }//while

    Return OK;

    }

  • 相关阅读:
    P2048 [NOI2010]超级钢琴 (rmq +堆+贪心)
    题解 P4799 【[CEOI2015 Day2]世界冰球锦标赛】
    洛谷 P1360 [USACO07MAR]Gold Balanced Lineup G (前缀和+思维)
    洛谷 P4880 抓住czx
    洛谷 P2471 [SCOI2007]降雨量
    洛谷 P4688 [Ynoi2016]掉进兔子洞 (看到题目背景,galgame玩家狂喜)
    洛谷 P2101 命运石之门的选择 (分治)
    留言版
    【游记】OI 2020(在更)
    类欧几里得算法
  • 原文地址:https://www.cnblogs.com/wj204/p/3044307.html
Copyright © 2011-2022 走看看