Implementacja zbioru

Implementacja zbioru
A6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Witam, mam do zrobienia takie oto zadanie:

Zadeklaruj typ Kolekcja, który może implementować albo zbiór przechowując elementy bez powtórzeń, albo torbę, przechowując elementy z powtórzeniami. Przyjmijmy, że przechowywane elementy są zadeklarowane deklaracją typedef Elem ... (Elem może być dowolnym typem). Zaimplementuj procedurę *void wstaw(Kolekcja k) oraz funkcję int szukaj(Kolekcja k, Elem e) zwracającą liczbę znalezionych elementów. Przyjmujemy, że argumenty e są zmiennymi automatycznymi. Zmienna typu Kolekcja powinna być inicjowana za pomocą dwóch procedur: *zbiór(Kolekcja k) albo *torba(Kolekcja k). Sposób inicjacji determinuje działanie metody wstaw i szukaj.

Bardzo bym prosił o jakąkolwiek pomoc z tym zadaniem.
Z góry wielkie dzięki.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

A z czym konkretnie masz problem? Masz przecież jasno napisane co trzeba napisać.

A6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

No właśnie średnio rozumiem polecenie. Mam chyba stworzyć listę, dobrze myślę?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Zakładając że masz mieć możliwość wstawiania nowych elementów to wykorzystanie listy będzie najlepszym pomysłem. Można co prawda użyc tablicy i bawić się w malloc/realloc ale może to być wolniejsze.

A6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Ale właśnie nie wiem jak mam się za to zabrać (tzn. za pisanie kodu).
Nie rozumiem tych zdań z treści:

Przyjmijmy, że przechowywane elementy są zadeklarowane deklaracją typedef Elem ... (Elem może być dowolnym typem).

Zmienna typu Kolekcja powinna być inicjowana za pomocą dwóch procedur: *zbiór(Kolekcja k) albo *torba(Kolekcja k). Sposób inicjacji determinuje działanie metody wstaw i szukaj.

No i w ogóle średnio ogarniam te listy w C a zadanie musze zrobić na jutro :/

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

A to ma być C czy C++ tak właściwie? No nikt tego za ciebie nie napisze, nawet się nie łudź.
Ja to widzę tak że masz w strukturze Kolekcja jakieś pole które określa czy jest to zbiór czy torba. Funkcja zbiór/torba ustawia jedynie wartość tej zmiennej. Funkcja wstaw() przed wstawieniem elementu sprawdza czy czasem taki element nie występuje (a jeśli tak to sprawdza czy jest to torba czy zbiór i w zależności od tego dodaje lub nie)

A6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

C

A6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

typedef Elem ... oznacz że mogę sobie w miejsce kropek wstawić jakąś nazwę i używać jej do odwoływania się do każdego możliwego typu?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

typedef pozwala ci nazwać typ jakimś aliasem, czyli jeśli zrobisz

Kopiuj
typedef Elem int

to twoja Kolekcja będzie przechowywać inty.

A6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Typ ma się nazywać Kolekcja czyli muszę zrobić coś takiego? :

Kopiuj
struct struktura {
   //tutaj jakieś dane mają być, ale co ja mam tutaj wpisać to nie mam pojęcia
   struct struktura *next
};
typedef struct struktura Kolekcja;

Coś takiego?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

eee to raczej bez znaczenia, tylko po co robić taką kombinację jak można od razu nadać odpowiednią nazwę?

A6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

To jak pomoże kto bo siedzie już ktoryś dzień z rzędu i nie daję z tym rady. Gdybym zobaczył choć część kodu to może by mi to coś rozjaśniło...

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Tak to nie działa. Pokaż co juz napisałeś i z czym konkretnie masz problem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.