Не верное выведение строки с нужным элементом из очереди через связный список

у меня такая проблема, существует 3 типа строк (типа: 1 В 14) в очереди (определяются по их номеру №1, №2, №3), а так же группирование по второму символу (пример: 1 В 14 и 1 S 13). Так вот мне нужно вывести данные в трех секциях по номеру, а так же мне нужны строки исключительно содержащие второй знак В, но выводятся строки как с В, так и с S.

Вот такой вот код на вывод данных, Секции по номеру у меня выводятся без проблем, а вот по буквам нет, не знаю в чем проблема. Пробовал уже создавать другой узел и перетягивать данные из головы, но при условии, что узел type будет иметь тип 'B'

void Queue::stat() {
    Node* ptr = front;

    while (ptr != NULL) {
        if (ptr->key == 1) {
            cout << "Item " << ptr->key << endl;
            for (int i = 0; i < count2(front); i++) {
                cout << "\t" << ptr->type << " " << ptr->quantity << endl;
                ptr = ptr->next;
            }
            return;
        }
        else if (ptr->key == 2) {
                cout << "Item " << ptr->key << endl;
                for (int i = 0; i < count(front); i++) {
                    cout << "\t" << ptr->type << " " << ptr->quantity << endl;
                    ptr = ptr->next;
                }
                return;
            }
        else if (ptr->key == 3) {
                cout << "Item " << ptr->key << endl;
                for (int i = 0; i < count(front); i++) {
                    cout << "\t" << ptr->type << " " << ptr->quantity << endl;
                    ptr = ptr->next;
                }
                return;
        }
    }
}

Есть подозрения в функции for которая подсчитывает данные в перовой, второй, третьей группе.

int Queue::count(Node* front) {
    Node* current = front;
    int ccount = 0;
    while (current != NULL) {
        if (current->key)
            ccount++;
        current = current->next;
    }
    return ccount;
}

Ответы (0 шт):