.NET 4.x Преобразовать строку в обратную польскую запись. - C#
Формулировка задачи:
Собственно как это реализовать.
Например входная строка "AvB" (где A и B заглавные симвволы)
должен получить "B A v"
А этот код пишет "A B"
Описание стека;
Стек перставлен в виде универсального класса. и имеет следующие методы.
Add(X) добавляет элемент в начало; Del() удаляет ээлемент; Del_And_ReturnData() Возвращает значение 1 (с верху) элемента и удаляет его; Del_Next_And_ReturnData() Возвращает значение 2 (с верху) элемента и удаляет его; PS знаю что получился не совсем стек... Если такого нету то Ошибка ToString() Возвращает все элементы стека в виде строки.Поля
Data первый элемент стека DataNext // второй элемент стека если естьclass item<TypeStack> { #region класс элемента списка private class ItemS { private TypeStack _Data; private ItemS _Next; public TypeStack Data { get { return _Data; } set { _Data = value; } } public ItemS Next { get { return _Next; } set { _Next = value; } } } #endregion ItemS it = new ItemS(); public void Add(TypeStack chislo) { ItemS a = new ItemS(); a.Data = chislo; a.Next = it; it = a; } public void Del() { it = it.Next; } public TypeStack Del_And_ReturnData() { TypeStack s = it.Data; it = it.Next; return s; } public TypeStack Del_Next_And_ReturnData() { TypeStack s = it.Next.Data; if (it.Next.Next != null) { ItemS a = new ItemS(); a.Data = it.Data; a.Next = it.Next.Next; it = a; } else { throw new Exception("Null"); } return s; } public override string ToString() { string s = ""; ItemS ss = it; while (ss.Next != null) { s += ss.Data + " "; ss = ss.Next; } return s; } public TypeStack Data { get { return it.Data; } } public TypeStack DataNext { get { return it.Next.Data; } } }
Код программы
private string polsk(string Text) { string s = ""; item<char> stack = new item<char>(); char [] mass = Text.ToCharArray(); for (int i = 0; i < mass.Length; i++) { if (mass[i] >= 'A' && mass[i] <= 'Z') { s += " " + mass[i]; } if(mass[i]=='!'||mass[i]=='v'||mass[i]=='^'||mass[i]=='→'||mass[i]=='↔'||mass[i]=='(') { stack.Add(mass[i]); } if (mass[i] == ')') { if (stack.Data != ')') s += " " + stack.Del_And_ReturnData(); else stack.Del(); } } return s; }
Решение задачи: «.NET 4.x Преобразовать строку в обратную польскую запись.»
textual
Листинг программы
private string polsk(string Text) { string s = ""; item<char> stack = new item<char>(); char [] mass = Text.ToCharArray(); for (int i = 0; i < mass.Length; i++) { if (mass[i] >= 'A' && mass[i] <= 'Z') { s += " " + mass[i]; } if (mass[i] == '!' || mass[i] == 'v' || mass[i] == '^' || mass[i] == '→' || mass[i] == '↔' || mass[i] == '(') { stack.Add(mass[i]); } if (mass[i] == ')') { while (stack.Data != '(') s += " " + stack.Del_And_ReturnData(); stack.Del(); } } s += " " + stack.ToString(); return s; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д