人民日报:中国改革决不能走私有化市场化道路
2008-06-30 11:19
218 查看
场景说明:在这里实现了多项式的的构建,例如2x(2)+4x(4),因为水平有限,因此使用的括号代表的是指数。最有意思的应该是在一个完整的多项式中插入一个多项式,其中有相同指数的合并,还有插入。通过分类讨论:
1)没有节点,直接添加
2)只有一个节点,合并或者在前驱插入,或者在后继添加
3)两个节点的情况下,使用两两组合的方式,查找合适的位置。
1)没有节点,直接添加
2)只有一个节点,合并或者在前驱插入,或者在后继添加
3)两个节点的情况下,使用两两组合的方式,查找合适的位置。
typedef struct SPolynomial { float coef; int expn; SPolynomial* pNextSPolynomial; }SPolynomial; class CPolyn { private: SPolynomial* m_pSPolynomialHeader; public: CPolyn() { m_pSPolynomialHeader=NULL; } ~CPolyn() { if(NULL==m_pSPolynomialHeader) return; SPolynomial* pTmp=m_pSPolynomialHeader; while(NULL!=pTmp) { free(pTmp); m_pSPolynomialHeader=pTmp->pNextSPolynomial; } } int AddPolyn(float coef,int expn) { //2.create insert node SPolynomial* p=new SPolynomial; //SPolynomial* p=(SPolynomial*)malloc(sizeof(SPolynomial)); p->coef=coef; p->expn=expn; p->pNextSPolynomial=NULL; //3.if polynheader is null,add and return if(NULL==m_pSPolynomialHeader) { m_pSPolynomialHeader=p; return 0; } //4.if polynheader has only one node if(m_pSPolynomialHeader->expn>p->expn) { p->pNextSPolynomial=m_pSPolynomialHeader; m_pSPolynomialHeader=p; return 0; } if(m_pSPolynomialHeader->expn==p->expn) { m_pSPolynomialHeader->coef+=p->coef; delete p; return 0; } //1.assing polynheader to tmp SPolynomial* pTmpSPolynomial=m_pSPolynomialHeader; //4.if polynheader only have two node,if a1.expn<p->expn<a2.expn,insert between if(NULL!=m_pSPolynomialHeader->pNextSPolynomial) { if((m_pSPolynomialHeader->expn<p->expn)&&(p->expn<m_pSPolynomialHeader->pNextSPolynomial->expn)) { p->pNextSPolynomial=m_pSPolynomialHeader->pNextSPolynomial; m_pSPolynomialHeader->pNextSPolynomial=p; return 0; } } //5 transever all node while((NULL!=pTmpSPolynomial->pNextSPolynomial)) { if(pTmpSPolynomial->expn==p->expn) { pTmpSPolynomial->coef=pTmpSPolynomial->coef+p->coef; delete p; return 0; } if(pTmpSPolynomial->pNextSPolynomial->expn==p->expn) { pTmpSPolynomial->pNextSPolynomial->coef+=p->coef; delete p; return 0; } if((pTmpSPolynomial->expn<p->expn)&&(pTmpSPolynomial->pNextSPolynomial->expn<p->expn)) { pTmpSPolynomial=pTmpSPolynomial->pNextSPolynomial; } else if((pTmpSPolynomial->expn<p->expn)&&(pTmpSPolynomial->pNextSPolynomial->expn>p->expn)) { p->pNextSPolynomial=pTmpSPolynomial->pNextSPolynomial; pTmpSPolynomial->pNextSPolynomial=p; return 0; } } pTmpSPolynomial->pNextSPolynomial=p; return 0; } void PrintPolyn() { SPolynomial* pTmp=m_pSPolynomialHeader; while(NULL!=pTmp) { cout<<"coef:"<<pTmp->coef<<" "<<"expn:"<<pTmp->expn<<endl; pTmp=pTmp->pNextSPolynomial; } } int PolyLength() { SPolynomial* pTmp=m_pSPolynomialHeader; int nLen=0; while(NULL!=pTmp) { nLen++; pTmp=pTmp->pNextSPolynomial; } return nLen; } int AddOnePolynToPoly(CPolyn* p) { //of course we can use addPolyn function to finish it but not effective //first step we should sketch one SPolynomial coef and expn and then use //AddPolyn(coef,expn)finish it ,however every time we should traserval every link //list float coef=0; int expn=0; while((-1)!=p->PopPolyn(coef,expn)) { AddPolyn(coef,expn); } return 0; } int PopPolyn(float& coef,int& expn) { if(NULL==m_pSPolynomialHeader) return -1; coef=m_pSPolynomialHeader->coef; expn=m_pSPolynomialHeader->expn; SPolynomial* pTmp=m_pSPolynomialHeader; m_pSPolynomialHeader=pTmp->pNextSPolynomial; delete pTmp; return 0; } }; int main(int argc, char *argv []) { QCoreApplication a(argc, argv); { CPolyn b; b.AddPolyn(1,2); b.AddPolyn(3,3); b.AddPolyn(2,4); b.AddPolyn(4,4); b.AddPolyn(5,6); b.AddPolyn(6,5); b.AddPolyn(6,5); b.AddPolyn(7,7); int size=b.PolyLength(); cout<<"size="<<size<<endl; b.PrintPolyn(); cout<<"Finish it"<<endl; } return a.exec(); }
相关文章推荐
- 人民日报:中国今天的改革要突破利益“雷区”
- 我看待“中国程序员需要改革开放”之90后才刚刚踏上软件的战场
- 大学市场化的改革不能再拖了
- 被吹捧为中国改革第一村:凤阳小岗村的现状很凄惨(转帖)
- 人民日报:中国经济09年后进入扩张期 持续七八年.
- 游戏专业突暂停招生 中国游戏职业化道路还长
- 快讯丨北京出台中国首个自动驾驶法规,北京第一批测试道路将推出
- 《吾民无地:城市化、土地制度与户籍制度的内在逻辑》:土地制度是否改革决定了中国是走向发达共同富裕还是拉丁美洲化 五星推荐
- 中国程序员需要改革开放 (zz)
- 中国程序员需要改革开放--思维开放,思想解放
- 中国制造人力资源信息化改革迫在眉睫
- 中国改革:稳住发展大盘,徐图政改新局
- 中国式创新是如何走向模仿道路的?
- 纵论中国模式发展道路 / 白益民
- 人民日报三论中国经济
- 读《我们的改革是不是正走向一个反面:谁抛弃了中国?》引发的一些另一个角度的思考
- 中国百姓的最大难题,也是中国改革的最大难题
- 【中国自动驾驶里程碑】北京出台全国首例自动驾驶新规,将推出第一批测试道路
- 中国程序员需要改革开放
- 改革开放三十年•推动中国电子产业发展的重大事件