#python #stack
Вопрос:
На самом деле я не могу понять этот код. Мы создаем стек и добавляем в него значения и открываем первый элемент. Тогда это условие len(ts)!=0 сбивает с толку. Первоначально мы не добавляли никаких значений к ts, а затем как выполняется это условие.
def sortstack(stack):
ts = createStack()
while len(stack) != 0:
temp = stack.pop()
while len(ts) != 0 and int(top(ts))>int(temp):
stack.append(ts.pop())
ts.append(temp)
return ts
def createStack():
stack=[]
return stack
def top(stack):
return stack[len(stack)-1]
stack=createStack()
stack.append(10)
stack.append(23)
stack.append(5)
stack.append(80)
stack.append(6)
Комментарии:
1. Посмотрите, что происходит после внутреннего цикла, все еще находясь во внешнем цикле.
2. можете ли вы уточнить, пожалуйста
3. В первом запуске вы 1) входите во внешний
while
цикл, 2) не входите во внутреннийwhile
цикл, 3) добавляетеtemp
ts
.
Ответ №1:
Он пропускает первый запуск цикла (потому что изначально мы не добавляли никаких значений в «ts») и добавляем первый элемент в «ts» в «ts.append(temp)». После этого при втором запуске цикла он входит во второй цикл while
Комментарии:
1. если верхний элемент в ts является Но здесь условие обратное?