【问题标题】:Linked list queue number move链表队列号移动
【发布时间】:2020-04-23 23:15:25
【问题描述】:

我有一个输入链表队列 [2,5,3,1,2,4]。 如何将所有偶数移动到输出文件的开头和奇数以结束? 我无法更改数字的顺序,例如它不能是 [2,4,2,1,3,5]。 它必须是 [2,2,4,5,3,1]。 我已经实现了队列,但我不知道如何进行排序。

【问题讨论】:

  • 您不能对队列进行排序。
  • 至少在没有将所有内容从队列中取出并在您再次放回队列时对其进行排序
  • 我建议使用另一个队列。将主队列中的值弹出到临时队列,直到某个值未排序。按排序顺序重新插入主队列。重复直到主队列被排序。

标签: c++ oop linked-list queue


【解决方案1】:

使用另一个队列。所以你从两个队列开始:

q1: [2,5,3,1,2,4]
q2: []

你知道q1的长度。

现在,从q1 的头部删除一个项目。如果是偶数,请将其添加到q2。如果奇怪,请将其重新添加到q1。对q1 中的每个项目执行此操作。它看起来像这样:

step 1:
q1: [5,3,1,2,4]
q2: [2]

step 2:
q1: [3,1,2,4,5]
q2: [2]

step 3:
q1: [1,2,4,5,3]
q2: [2]

step 4:
q1: [2,4,5,3,1]
q2: [2]

step 5:
q1: [4,5,3,1]
q2: [2,2]

step 6:
q1: [5,3,1]
q2: [2,2,4]

现在您已将它们分成偶数和奇数,您可以从 q1 中删除内容并将它们添加到 q2

【讨论】:

    猜你喜欢
    • 2017-04-20
    • 1970-01-01
    • 2020-01-04
    • 2018-03-16
    • 1970-01-01
    • 2020-01-05
    • 2018-03-17
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多