Я работаю над заданием, в котором нас просят заполнить дерево AVL значениями.
Код должен взять строку из терминала и выполнить дополнения к дереву, а также удаления. затем, наконец, распечатайте дерево AVL по порядку.
Строка с терминала будет выглядеть следующим образом
A3 A5 A6 D5 D6 print
Строка может иметь длину от 1 до 100 входов.
Мой вопрос: каков наилучший способ реализовать функцию считывателя терминала, которая будет эффективно и результативно записывать и вводить значения и даже инициализировать функции ввода, удаления и печати?
Я знаком с потоком строк и библиотекой sstream, но изо всех сил пытаюсь найти хорошее решение этой проблемы.
Какой-то псевдокод для предполагаемой функции будет выглядеть примерно так.
void stringReader(string sentence){
string word;
stringstream instring(input);
instring >> word;//word should be a single input ie: "A3" or "D6"
//in the 0th position of the string stream.
if (word == "print"){
printAVL(node* treeroot);
return;
}else{
if(statement to determine if A or D){
//perform deletion or addition;
}
}
input.removeFirstWord()//some magic function I am yet to find that removes the first input
//and allows me to do this recursively.
stringReader(input);
}
int main(){
string input;
getline(cin, input);//the raw input line from terminal ie;"A3 A5 A6 D5 D6 print"
stringReader(input);
}
Я не на 100% привержен рекурсивному методу, и я не рад использовать библиотеку sstream. Любые идеи или методы очень ценятся.
РЕДАКТИРОВАТЬ - используя while l oop и добавление строк к вектору - еще одна идея, над которой я работаю.
Спасибо за вашу помощь
PS - Назначение - оценить нашу способность писать программу дерева AVL, обработка входов не отмечена. Я просто хочу использовать хороший метод и возможность развивать свои навыки дальше.