Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Lista dwukierunkowa


Rekomendowane odpowiedzi

Opublikowano

Witam. Potrzebuję napisać funkcję, która 1)usuwa co 2 element z listy 2)zamienia element pierwszy z drugim miejscami (nie mogę korzystać z gotowej biblioteki)

tutaj są moje wypociny (wiem, zaraz dostane za to po dupie ale co tam :P)

class Element
{
public:
    Element *poprzedni, *nastepny;
    
};

class Lista
{
public:
    Element *pierwszy, *ostatni;
    int zlicz;

    Lista()
    {
        pierwszy=NULL;
        ostatni=NULL;
        zlicz=0;
    }

    ~Lista()
    {
        Element *p;
        while(pierwszy)
        {
            p=pierwszy->nastepny;
            delete p;
            pierwszy=p;
        }
    }

    void *dodaj(Element *p)
    {
        p->nastepny=pierwszy;
        p->poprzedni=NULL;
        if(pierwszy)
        {
            pierwszy->poprzedni=p;
        }
        pierwszy=p;
        if(ostatni==NULL)
        {
            ostatni=pierwszy;
        }
	zlicz++;
        return pierwszy;
    }

   


    void usun()
    {
        Element *p, *n;
        int k=0;
        while(pierwszy){
        k=k%2;
        if(k==0)
        {
            p=pierwszy;
            pierwszy=pierwszy->nastepny;
            delete p;
            k++;
        }
        else
        {
            pierwszy=pierwszy->nastepny;
            k++;
        }
      }
    }

void zamien()
    {
        Element *p1, *p2;
        p1=pierwszy;
        p2=ostatni;
        ostatni->poprzedni=ostatni;
        ostatni->nastepny=NULL;
        ostatni->nastepny=p1;
        ostatni=p1;

        pierwszy->nastepny=pierwszy;
        pierwszy->poprzedni=NULL;
        pierwszy->poprzedni=p2;
        pierwszy=p2;
    }
};

Jeśli ktoś mógłby to poprawić byłbym wdzięczny.

Przepraszam, jeśli ktoś się na mnie zdenerwuje, ale jestem początkującym :)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...