Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
1.82 Кб
Скачать
#include <iostream>
#include <locale>
using namespace std;

class ListNode {
protected:
    int data;
public:
    ListNode(int d) : data(d) {}
    virtual ~ListNode() {}
    virtual void print() const = 0;
};

class SimpleListNode : public ListNode {
    SimpleListNode* next;
public:
    SimpleListNode(int d) : ListNode(d), next(nullptr) {}
    
    void setNext(SimpleListNode* node) { next = node; }
    
    void print() const override {
        cout << data;
        if (next) {
            cout << " -> ";
            next->print();
        } else {
            cout << " -> NULL" << endl;
        }
    }
};

class DoublyListNode : public ListNode {
    DoublyListNode* next;
    DoublyListNode* prev;
public:
    DoublyListNode(int d) : ListNode(d), next(nullptr), prev(nullptr) {}
    
    void setNext(DoublyListNode* node) { next = node; }
    void setPrev(DoublyListNode* node) { prev = node; }
    
    void print() const override {
        cout << "(";
        if (prev) cout << prev->data;
        else cout << "NULL";
        cout << ") <- " << data << " -> (";
        if (next) cout << next->data;
        else cout << "NULL";
        cout << ")" << endl;
    }
};

int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    SimpleListNode* node1 = new SimpleListNode(1);
    SimpleListNode* node2 = new SimpleListNode(2);
    node1->setNext(node2);
    
    cout << "Однонаправленный список: ";
    node1->print();
    
    DoublyListNode* dnode1 = new DoublyListNode(1);
    DoublyListNode* dnode2 = new DoublyListNode(2);
    dnode1->setNext(dnode2);
    dnode2->setPrev(dnode1);
    
    cout << "Двунаправленный список: ";
    dnode1->print();
    dnode2->print();
    
    return 0;
}
Соседние файлы в папке Лаба5