Implementacja zbioru

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.

0

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

0

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

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.

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 :/

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)

0

C

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?

0

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

typedef Elem int

to twoja Kolekcja będzie przechowywać inty.

0

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

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?

0

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

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...

0

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

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