Тема: 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");
}