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






Объедините и используйте sorted
queue1 = ["a","d","x"]
queue2 = ["b","c","y","z"]
queue3 = sorted(queue1 + queue2)
['a', 'b', 'c', 'd', 'x', 'y', 'z']
Очереди Python на самом деле этого не делают, даже если в коде OP есть списки вместо очередей. Следует ли редактировать вопрос?
Из вашего вопроса неясно, чего вы пытаетесь достичь. Если вы хотите получить отзывы о своей реализации, сформулируйте тему и тело, чтобы отразить это. Если вы хотите узнать, как объединить, а затем отсортировать два списка, удалите код, поскольку он на самом деле не проясняет ваш вопрос. Кажется, ваш прикрыл ...