数据结构学习(C++)之单链表
域直接分解出了Term的数据成员,也就是说是指向Term结构的;然后让ListNode<Term>类型的指针p指向这个Term结构,最后,居然把这个结构delete了,天啊,ListNode<Term>这样的节点的data域被delete了!
在下面将会有些重载运算符的例子,我们的工作将是使多项式的运算看起来更符合书写习惯。完成这些是我觉得我擅自将原书的“+”改成了PolyAdd(),总要给个交待吧。 下面将完成单链表的赋值运算的重载,请把这部分加到List类的public部分。的确,这部分也可以放在多项式类里实现;但是,复制一个多项式实际上就是复制一个单链表,与其单单做一个多项式赋值,还不如完成单链表的赋值,让派生类都能共享。 operator = (const List<Type> &l)
还记得List类的private里面的这个List(const List<Type> &l)吗?当初怕它惹祸,直接将它禁用了,既然现在=都能用了,为了这种语法List<Type> b = a;顺便也把它完成了吧。现在可以把它从private放到public了。 List(const List<Type> &l)
终于可以这样写了a = b + c * d friend Polynomial operator + (Polynomial &polyA, Polynomial &polyB)
【后记】很显然,在“+”的处理上我偷懒了,但这是最方便的。乘法部分只要参照手工运算,还是很简单的,我就不解释了。对于“-”,可以先完成(-a)这样的算法,然后就可以用加法完成了,而你要是象我一样懒很可能就会做这种事-a=-1×a,真的不提倡,超低的效率。对于除法,如果你会用汇编写多字节除法(跟手工计算很像),依样画葫芦也能弄出来,但首先要完成“-”。如果要写又得好长,留给你完成吧。到这里你明白原位加法的重要了吧,这些运算实际上都是靠它实现的。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |