读书人

如何用链式队列存储多项式

发布时间: 2013-07-01 12:33:04 作者: rapoo

怎么用链式队列存储多项式
本帖最后由 fantorm 于 2013-05-31 16:59:22 编辑 数据结构课的实验题 怎么用链式队列存储多项式
用链表做我会弄,但是用链式队列,只能从队头出数,队尾进数,那怎么写才能完成让指数相同的项合并呢。

要求是:多项式a和b相加,建立多项式a+b;如果用队列存储多项式,则需为多项式(a+b)另外创建一个队列。

求大神给点思路,不用具体代码实现了。 数据结构 队列 存储
[解决办法]

引用:
Quote: 引用:

使用三个队列可以实现你的功能:
队列1保存了多项式a的各项,队列2保存多项b的各项,还有一个临时队列3.
当a+b时,首先判断a中队列出队的元素的指数是多少,如1,保存到一变量tempa中;
查看b队列出对元素,(1)假如和temp不同的话,直接出队保存到队列3中,直到有指数相同的项目,此时两个出队元素相加,然后将其入队---往队列2(队列2也作为结果队列)。将队列3中的元素全部出对保存到队列2中,队列1此时少一个元素;(2)假如队列2中所有元素完全出队且没有和tempa相同的项的话,队列1中的元素直接添加到队列2,同理队列3中的元素返回队列2.
以此类推,直到队列1为空。
可改善细节是:假如碰到队列2完全出队,可以将队列3作为新的多项式b的保存队列,队列2作为临时队列,此时只要将a中出对的元素直接入队列3即可。


如果需要相加后的多项式 按降序排列 如何操作

我的第一思路是:因为b已经是a+b的结果队列了,此时a或者c为空,利用这两个队列中的一个实现排序。然后完全销毁他们即可。
排序过程如下:如b中指数出队顺序(即排列顺序):1、5、2、4、7。此时先出(指数为)1(的项),放到b中,然后是5,现在出2,因为2<5,将5出对后返回a中(5现在在队尾了),a的队列为:2、4、7、5。出2后,b为2、1.以此类推,最后b为:7,5,4,2,1.假如这个顺序不是所要的话,依次出对返回a,a中顺序为:1,2,4,5,7.你看哪个是你需要的你就使用哪个。
不算太复杂吧。

读书人网 >C语言

热点推荐