2016-07-12 2 views
-6

Мне нужно написать функцию для изменения данной строки только с использованием структуры данных Stack.Функция обратного преобразования строк с использованием структуры данных стека в python

+1

Вы хотите отменить слова или почитать всю строку? Простой поиск в Google даст вам несколько решений. Никто из них не работал на вас? – Rohit

+2

Похоже Домашние задания – Jens

+3

Это интересная задача. У вас есть вопрос? – TigerhawkT3

ответ

1

Возможно, это программа, которую вы хотели. Эта функция будет отменять всю строку, а не слово за словом.

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

    def push(self, item): 
     self.items.append(item) 

    def pop(self): 
     return self.items.pop() 

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

    def isEmpty(self): 
     return len(self.items) == 0 

def reverse(text): 
    s = Stack() 
    for c in text: 
     s.push(c) 
    revText = "" 
    while not s.isEmpty(): 
     revText += s.pop() 
    return revText 

#test code 
print(reverse("abcde")) 
1

Было бы лучше указать пример кода или сообщить библиотеке, которую вы хотите использовать для создания стека. Кстати, алгоритмически вы можете просто:

  • Прочитайте строку по одному символу за раз и положите ее в свой стек.
  • Когда строка полностью прочитана, поместите стек до пустого.
1

Предыдущий код должен работать, но вы понимаете, что это один или более вообще, что такое стек?

Стек представляет собой структуру FILO (первый в последний выход), если нажать три элемента А, В и С в этом порядке, стек будет: [A, B, C] ->

Тогда, первый элемент pop будет C. Итак, вы домашнее задание очень просто. Вы нажимаете все символы своей строки и выталкиваете их.

string str = "hello world!"

// create a new stack 
// push for each char in str 
// -> stack = [!, d, l, o, r, w, , o, l, l, e, h] 
// and pop all char 
// it's done 

Это anwser многое объяснить, как стек работает так, для кода, который вы можете взять предыдущую или попробовать самостоятельно. Это легкая, но хорошая тренировка.