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;

    }

  • 相关阅读:
    如何测试复杂的逻辑
    Docker 安装nginx和tomcat
    提高英语
    2020年终总结
    在互联网上班是什么感觉?
    已经过去2周了,你感觉怎么样?
    如何使用玩弄 macOS 的「聚焦搜索」
    如何使用玩弄 macOS 的「聚焦搜索」
    [sdoi2015]排序(搜索+剪枝优化)
    [sdoi 2010][bzoj 1925]地精部落(神仙dp)
  • 原文地址:https://www.cnblogs.com/wj204/p/3044307.html
Copyright © 2011-2022 走看看