Стек обратной матрицы - PullRequest
       11

Стек обратной матрицы

0 голосов
/ 24 ноября 2018

Я пытаюсь сделать стек за матрицей и перевернуть матрицу стека и показать его как сидящий в коробке:

stack=[]
x=int(input("Enter size of stack :"))
Top=-1
for i in range(x):
    Top+=1
    stack.append(int(input("Top is in {} position\nEnter stack item  :".format(i))))
print("stack=",stack)
print("|",stack[Top],"|","==>Top")
for i in range(len(stack)-1):
    Top-=1
    print("|",stack[Top],"|")

rev=[]
rev_top=-1
for x in range(-1,-len(stack)-1,-1):
    rev.append(stack[x])
    rev_top+=1
print("stack recerse =",rev)

Пут:

|7 4 5 |==>Top
|3 5 9 |
|2 4 5 |
|4 5 2 |

Я хочу, чтобы все было наоборотвот так

|4 5 2 | ==>Top
|2 4 5 |
|3 5 9 |
|7 4 5 |

Таким образом, каждый раз, когда я выскакиваю строку, верхняя позиция перемещается к следующей, пока стек не опустеет.

1 Ответ

0 голосов
/ 24 ноября 2018

Во-первых, вместо вашего относительно длинного кода для обращения элементов в списке stack

rev=[]
rev_top=-1
for x in range(-1,-len(stack)-1,-1):
    rev.append(stack[x])
    rev_top+=1

вы можете использовать встроенную функцию reversed():

rev = list(reversed(stack))         # list() is used because reversed() returns an iterator

или- еще лучше - перевернуть список stack на месте с помощью метода reverse():

stack.reverse()  # Note: Do NOT use something as stack = stack.reverse() - you will get Null

Теперь вы можете использовать тот же код из вашей программы для приятной печати стека с обратной связью, то есть детали

top = -1
print("|", stack[top], "|", "==>Top")
for i in range(len(stack) - 1):
    top -= 1
    print("|", stack[top], "|")

(Я поместил в него несколько пробелов и изменил имя переменной Top на top, чтобы оно соответствовало PEP 8 - Руководство по стилю для кода Python .)

...