Lista zbudowana na klasie

0

Witam,
Może jestem jakiś tępy ale doszedłem w mojej nauce programowania do list i nie mogę tego przegryźć.
W sieci jest mnóstwo przykładów ale prawie wszystkie są na strukturach a jak już jest coś na klasach to jest jakieś skomplikowane i nie wiem o co chodzi.
Czy może mi ktoś pokazać i ewentualni wytłumaczyć jeśli będę miał problem kod najprostszej listy stworzonej na klasach?
Może ona nic nie robić.
Prosił bym o klasę lista z podstawowymi metodami albo jakiś dobry link.
Aż mi głupio jak widzę, że to nie jest takie trudne ale siedzę już kilka godzin i nie idzie....

0

Prawdopodobnie wszystko będzie działać, jeżeli słówko struct zamienisz na class.

0

Ale z tego co widzę to zwykle tworzone są dwie struktury.
W funkcjach są dziwne nazwy złożone z wielu małych i dużych liter które nic mi nie mówią, jest tam mnóstwo wskaźników i po prostu gubię się i nie wiem co jest co.
Chciał bym zwykłą najprostszą pustą listę zbudowaną na klasach.
Z nazwami zmiennych typu wartosc, nastepny, poprzedni. Zamiast *aDDtoNext8219381298tilltailheadBox4
Metodami typu dodaj, wyszukaj itp
Tak chyba najłatwiej się tego nauczę.

0

Być może. Z drugiej strony na (tym) forum istnieje pewna zasada: pomagamy, naprowadzamy, ale nie piszemy (za darmo) za kogoś całych programów. Jeżeli nie rozumiesz trzech konkretnych linijek kodu to je tutaj wklej. Jeżeli nie rozumiesz większości kodu to jednak polecam wrócić do podręcznika.

0

No to inaczej:


class Lista
{
    string wiersz;
    Lista *next;
public:
    ~Lista();
    void dodaj(Lista*,string);
};

Lista::~Lista()
{
    delete next;
}

void Lista::dodaj(Lista *l,string x)
{
    Lista *ob=new Lista;
    Lista *tmp=new Lista;
    tmp->wiersz=x;
    tmp->next=NULL;
    *ob->next=tmp;

}

Co mam zrobić żeby to zadziałało.
W jaki sposób mam dodać kolejny element list i jak się do niego potem odwołać.

Nie posiadam podręcznika. Uczę się z internetu i zależy mi na czasie. Ale tego z netu nauczyć się nie potrafię.
Jeśli ktoś zna jakiś dobry link na temat list na klasach to chętnie poczytam.

0
template <typename T>
class Lista
{
      private:
      T *kontener;
      int size;
      public:
      Lista(int a)
      {
            kontener=new T [a];
            size=a;
      }
      ~Lista()
      {
            delete [] kontener;
      }
      dodaje_lement(T cos)
      {
            T *buff=new T[size];
            size++;
            //przepisz kontener do buff;
            kontener=new T[size];
            kontener[size-1]=cos;
            delete [] buff;
      }
      //podobnie jak wyzej mozesz usuwac jakis element o podanym indeksie
      //zdałoby sie przeciazyc jakis operator dostepu do okreslonego elementu w kontenerze
};

Z palca klikane wiec szaleństwo to to nie jest ale ja bym tak kombinował...

1

Mylisz książkową definicję listy (lista -> element . lista lub lista -> null), z tym jak powinien zachowywać się kontener. Stwórz klasę lista, która będzie się zajmowała interfejsem, a w niej stwórz strukturę np. node, która będzie odpowiadała za element listy (czyli ma zawartość elementu i wskaźnik na kolejny element).

0

Ja bym poprosił o jasne wytłumaczenie CO i PO CO chcesz zrobić, jak najdokładniej.

0

Chce się po prostu nauczyć operować listą.
Tyle.
A co chce zrobić?
Listę zbudowaną na klasach posiadającą podstawowe metody do obsługi listy.

Może być to lista przechowująca np kolejne cyfry na kolejnych pozycjach, to bez znaczenia.

2
  1. Najpierw dowiedz się po co listę w ogóle używać. Co to jest i teoria, czysto z wikipedii, nie przeglądaj żadnych źródeł.
  2. Zainteresuj się listą stl-ową (prosty przykład) - poczytaj jak to działa, pobaw się itp.:
    
    #include <list>

using namespace std;

int main()
{
list<int> lista;
lista.push_back(5);
lista.push_front(6);
// ... mozna tutaj sobie dodawac do usranej smierci

// operacje na wszystkich elementach
for (list<int>::iterator it = lista.begin(); it!=lista.end(); ++it)
{
// aktualny element listy na ktorym operujesz to: it
// do aktualnego elementu dodaje 5
it += 5;
}
return 0;
}



3. Jeśli po obejrzeniu powyższej klasy nadal masz potrzebe, zadanie w szkole albo uczelni, żeby napisać samemu listę, to
a) czytasz na temat wskaźników - masz się swobodnie nimi poruszać
b) czytasz o new/delete (powinno zająć około minuty, o ile w poprzednim punkcie tego nie zrobiłeś)
c) jeszcze raz robisz to co w punkcie 1.
d) już powinieneś wiedzieć jak napisać

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0