vineri, 25 aprilie 2008

Proiect 3

Sorry for the late poast, am fost cam prins saptamana asta.

Ideea la proiectul 3 este sa creati o clasa lista universala - campul de informatie trebuie sa poata stoca orice tip de data/clasa.
Sunt mai multe metode de implementare, nu va restrang la nici una dar va recomand sa o incercati pe a treia (punctajul va fi un pic subiectiv si adjustat in functie de complexitatea rezolvarii oferite de voi - asta nu inseamna ca daca faceti ca mine pierdeti puncte ci doar sa incercati sa scrieti cat mai bine algoritmul si sa fie cat mai universal).
Metode de rezolvare care imi trec in cap momentan:
1. liste clasice cu o modalitate de a avea ca membru orice tip de clasa (fara templates)
2. liste clasice cu templates
3. mai apropiat de conceptul de vector decat cel de lista. Dar imaginati-va urmatoarea structura:
struct Lista{
ListHeader header;
void *data;
}
data va pointa catre spatiul de memorie alocat pentru lista noastra. ListHeader ar trebui sa aiba cam urmatorii membri:
  • dimensiunea unui element (pentru lista de int va fi sizeof(int) etc)
  • nr de elemente alocate
  • nr de elemente in lista
  • marja de siguranta - daca nr alocate - nr lista <= marja realocam lista (realloc) cu
  • nr elemente alocate la realocare
E posibil sa mai fie nevoie si de alte chestii, vedeti pe parcurs.

Lista trebuie sa poata as faca:
  • insertie
  • scoaterea unui element din lista
  • cautarea dupa indice si cheie (la cheie e un pic dubios pentru unele clase, incercati ceva cat mai ... cum va trece voua prin cap si cat de cat okay)
  • sortarea elementelor listei (aveti grija ca nu e obligatori ca toate clasele sa aiba suprascris operatorul <)
Cam atat cred... daca imi mai trece ceva prin cap I'll let you know.

Paste Fericit si toate cele bune.

Niciun comentariu: