[C++] Lista cykliczna

Anka_S
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 13 lis 2016, o 21:22
Płeć: Mężczyzna
Lokalizacja: Polska

[C++] Lista cykliczna

Post autor: Anka_S »

Witam, mam listę cykliczną, która działa na zasadzie stosu. Moim zadaniem jest takie przerobienie kodu, aby lista była sortowana według wartości zmiennej key_ w obiektach. Myślałam, żeby przy dodawaniu porównywać te zmienne i umieszczać na odpowiednim miejscu, ale nie wiem jak wyłuskać wartość zmiennej z kolejnego obiektu. Muszę operować wyłacznie na wskaźnikach. Pytanie - jak najlepiej to zrobić?

Kod:

Kod: Zaznacz cały

#include <iostream>
#include <cstddef>
using namespace std;

class List
{
private:
    int key_;
    List * next;
public:
    List * head;
    List();
    ~List();
    void PrintList();
    void AddElementToList(int value_);
    void RemoveElementFromList();
};

List::List()
{
    head = nullptr;
}

List::~List()
{
    while(head) RemoveElementFromList();
}

void List::PrintList()
{
    List * p;

    p = head;
    if(p)
        do
        {
            cout << p->key_;
            p = p->next;
            cout << endl;
        }
        while(p != head);
}

void List::AddElementToList(int value_)
{
    List * p = new List;

    p->key_ = value_;

    if(head)
    {
        p->next = head->next;
        head->next = p;
    }
    else p->next = p;
    head = p;
}

void List::RemoveElementFromList()
{
    if(head)
    {
        List * p = head->next;
        head->next = p->next;
        if(p->next == p) head = nullptr;
        delete p;
    }
}

int main()
{
    List L;
    int i = 1;
    int j = 3;
    int k = 10;
    int l = 8;
    int m = 2;
    L.AddElementToList(i);
    L.AddElementToList(j);
    L.AddElementToList(k);
    L.AddElementToList(l);
    L.AddElementToList(m);
    L.PrintList();

    L.~List();
    L.PrintList();
    return 0;
}
ODPOWIEDZ