Связные списки I

Double Threaded List (Spojáky)

Описание задачи

Реализовать функции для работы со структурой данных, которая поддерживается в двух порядках одновременно:

Структуры данных

struct Item {
    char* m_Text;        // Текст элемента
    Item* m_Next;        // Следующий (хронологически)
    Item* m_Prev;        // Предыдущий (хронологически)
    Item* m_NextSorted;  // Следующий (алфавитно)
};

struct List {
    Item* m_First;       // Первый (хронологически)
    Item* m_Last;        // Последний (хронологически)
    Item* m_FirstSorted; // Первый (алфавитно)
};

Функции для реализации

Пример работы

Операции
Add("Charlie")
Add("Alice")
Add("Bob")

Хронологически: Charlie ↔ Alice ↔ Bob
Алфавитно: Alice → Bob → Charlie

Search("Bob")

Хронологически: Charlie ↔ Bob ↔ Alice  (Bob и Alice поменялись)
Алфавитно: Alice → Bob → Charlie        (без изменений)

Ключевые моменты

← К списку Вогонская поэзия →