Слияние двух очередей в алфавитном порядке - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь объединить две очереди (эти две очереди предполагают, что они были отсортированы по алфавиту) в третью очередь и вернуть третью очередь в алфавитном порядке.Например:

queue1 = ["a","d","x"]
queue2 = ["b","c","y","z"]
# the third queue should look like
queue3 = ["a","b","c","d","x","y","z"]

Это мой код (я не использую метод merge()):

import string
from pythonds.basic.stack import Stack

class Stack1Queue:

  Stackone = Stack()
  Stackto = Stack()

def __init__(self):
  self.items = []

def add(self, element):
  self.items.append(element)

def remove(self):
  if len(Stackto) == 0:
      if len(Stackone) == 0:
          return None
      while not Stackone.isEmpty():
          p = Stackone.pop()
          Stackto.push(p)
   return Stackto.pop()

def peek(self):
    return self.items[len(self.items) - 1]

def isEmpty(self):
    return self.items == []

def size(self):
    return len(self.items)


class MergeQueue(Stack1Queue):
  adict = dict(enumerate(string.ascii_lowercase))
  Queuethr = Stack()

  def merge(self, Stackone, Stackto):

      while not Stackone.isEmpty() and Stackto.isEmpty():
          for k, v in adict.items():
              if Stackone.peek() == adict.get(v):
                  Queuethr.push(Stackone.peek())
              else:
                  Queuethr.push(Stackto.peek())
          print(dict(Queuethr))
          return 1

В основном мой первый класс Stack1Queue предназначен для реализации двухстек для создания очереди.В любом случае, мне просто интересно, правильно ли написана моя функция merge или нет.Когда я пытаюсь запустить:

s = Stack1Queue()
p = Stack1Queue()
q = MergeQueue()
s.add("z")
s.add("y")
s.add("d")
s.add("b")
s.add("a")
p.add("x")
p.add("d")
p.add("c")
print(q.merge(s, p))

Возвращается 0 для размера q

1 Ответ

0 голосов
/ 02 октября 2018

Объединить и использовать sorted

queue1 = ["a","d","x"]
queue2 = ["b","c","y","z"]

queue3 = sorted(queue1 + queue2)
['a', 'b', 'c', 'd', 'x', 'y', 'z']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...