Сортировать односвязные списки при вставке в istream C++

Я самый простой человек в мире, когда дело доходит до C++, и мне было интересно, если вы, ребята, могли бы помочь мне, если это будет хорошо. Я пытаюсь выполнить сортировку по узлам, прочитанным в istream, но КАК они читаются. Код в сети очень сложный, и мне было интересно, есть ли самый простой способ добиться этого.

Вот мой метод чтения, и до сих пор он читает в istream, и это здорово, но теперь мне нужно отсортировать его как прочитанное. Моя голова болит, ха-ха

void ListClass::Read(istream& r)
{
    char c[13];
    r >> c;
    r >> numberOfInts;

    Node *node = new Node();
    head = node;

    for(int i = 0; i < numberOfInts; i++)
    {
        r >> node->data;
        cout << node->data << endl;
        node->next = new Node;
        node = node->next;
    }

}

и вот мой класс Node в моем заголовочном файле

class Node
{
public:
    Node() {} //default constructor
    Node(int d, Node* q = 0) : data(d), next(q) {} //constructor with parameters data and next
    int data; //holds data in node
    Node* next;//pointer to next node
};

1 ответ

Решение

Посмотрите, заставляет ли это вас правильно думать о проблеме:

Вы начинаете с колоды карт лицом вверх. Вы хотите отсортировать колоду карт, но вы должны следовать некоторым странным правилам.

Вы помещаете несортированную колоду карт так, чтобы вы могли видеть только верхнюю карту. Начните с перемещения первой карты в вашу отсортированную стопку (одна карта автоматически сортируется).

Посмотрите на следующую несортированную карточку. Если она больше (или меньше), чем верхняя отсортированная карта, переместите верхнюю отсортированную карту в третью стопку. Продолжайте перемещать карты одну за другой в третью стопку, пока ваша новая карта не станет меньше следующей отсортированной карты или пока отсортированная стопка не станет пустой, затем переместите несортированную карту в отсортированную стопку. Переместите карты одну за другой назад из третьей стопки в отсортированную стопку.

Повторяйте предыдущий шаг до тех пор, пока несортированная куча не станет пустой.

Другие вопросы по тегам