Тема: C++ Перевірка дужок. Стек
Привіт. В задачі потрібно перевірити чи співпадають відкриваючі та закриваючі дужки. Реалізацію задумав наступну: 1. вводимо строку; 2. проходимось циклом по кожному елементу строки 3. якщо знаходимо відкриваючу дужку - кладемо її в стек на початок 4. якщо дужка закриваюча - звіряємо її з тією, що у верхівці стеку; 5. якщо співпало - продовжуємо, ні - виходимо з циклу
Біда в тому, що у мене програма не кладе дужки в стек
В чому проблема?
#include<iostream>
#include <string>
using namespace std;
class Bracket
{
struct Node
{
char bracket;
Node *pNext;
};
int count;
Node *pHead;
Node *pTail;
public:
Bracket()
{
pHead = pTail = nullptr;
count = 0;
}
Bracket(char obj)
{
Node *pCur = new Node;
pCur->bracket = obj;
}
bool addBracket(char obj)
{
Node *pNew = new Node;
if (pNew)
{
if (count == 0)
{
pHead = pTail = nullptr;
}
pNew->bracket = obj;
pNew->pNext = nullptr;
if (pTail = nullptr)
{
pHead = pTail = pNew;
}
else if (pHead == pTail)
{
pHead->pNext = pNew;
pTail = pNew;
}
else
{
pTail->pNext = pNew;
pTail = pNew;
}
count++;
return true;
}
return false;
}
bool checkBrakets(char example)
{
if (count == 0 || pHead->bracket != example)
{
return false;
}
Node *pDel = new Node;
pDel = pHead;
pHead = pHead->pNext;
delete pDel;
pDel = nullptr;
count--;
return true;
}
};
void main()
{
string some_text;
cout << "Enter your brackets : ";
getline(cin, some_text);
Bracket obj;
for (int i = 0; i < sizeof(some_text); ++i)
{
if (some_text[i] == '(' || some_text[i] == '[' || some_text[i] == '{')
{
obj.addBracket(some_text[i]);
}
if (some_text[i] == ')' || some_text[i] == ']' || some_text[i] == '}')
{
if (obj.checkBrakets(some_text[i]))
{
continue;;
}
else
{
cout << "Brackets do not meet each other!" << endl;
break;
}
}
cout << "Brackets confirmed" << endl;
}
system("pause");
}