Imagem de fundo

Pilhas podem ser implementadas em Python por meio de listas...

Pilhas podem ser implementadas em Python por meio de listas em que o último elemento é o topo da pilha, como no exemplo abaixo:


pilha01 = ['a4', 'a3', 'a2', 'a1'] # o elemento 'a1' está

# no topo da pilha


pilha02 = ['b2', 'b1'] # o elemento 'b1' está no topo da pilha


Considere uma função Python, chamada unifica, que recebe duas pilhas como parâmetros e retorna uma terceira, que é o resultado da intercalação dos elementos das duas pilhas recebidas como parâmetros. Um programa Python chamou essa função unifica, passando como parâmetros as duas pilhas do exemplo acima (pilha01 e pilha02). O resultado da intercalação foi a pilha


['a4', 'a3', 'b2', 'a2', 'b1', 'a1']


Qual implementação da função unifica realiza o que foi descrito acima?


A

def unifica(p1, p2):

p3 = [ ]


while len(p1) > 0:

p3.append(p1.pop())


while len(p2) > 0:

p3.append(p2.pop())


return p3


B

def unifica(p1, p2):

p3 = [ ]


while len(p1) > 0 and len(p2) > 0 :

p3.append(p1.pop())

p3.append(p2.pop())


return p3


C

def unifica(p1, p2):

p3 = [ ]

p4 = [ ]


while len(p1) > 0 and len(p2) > 0 :

p3.append(p1.pop())

p3.append(p2.pop())


while len(p3) > 0:

p4.append(p3.pop())


return p4


D

def unifica(p1, p2):

p3 = [ ]

p4 = [ ]


while len(p1) > 0 or len(p2) > 0 :

if len(p1) != 0:

p3.append(p1.pop())

if len(p2) != 0:

p3.append(p2.pop())


while len(p3) > 0:

p4.append(p3.pop())


return p4


E

def unifica(p1, p2):

p3 = [ ]

p4 = [ ]


while len(p1) != 0:

if len(p1) != 0:

p3.append(p1.pop())


while len(p2) != 0:

if len(p2) != 0:

p3.append(p2.pop())


while len(p3) > 0:

p4.append(p3.pop())


return p4