Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Pietreck

Jednowymiarowa tablica dynamiczna

Polecane posty

Witam! :happy:

Mam pewien problem związany z jednowymiarową tablicą dynamiczną.

Piszę w języku C.

Załóżmy, że wczytałem 5 jako ilość elementów tablicy. Następnie, jako wartości poszczególnych elementów tablicy, wprowadziłem liczby tj.:

tab[0] = 1

tab[1] = 2

tab[2] = 3

tab[3] = 4

tab[4] = 5

Następnie chciałbym usunąć z tablicy 4, czyli tab[3] (trzeci element). Czy macie pomysł w jaki sposób to zrobić? Oraz czy po usunięciu liczby 4 tablica będzie wyglądać:

tab[0] = 1

tab[1] = 2

tab[2] = 3

tab[3] = 5

Czy też:

tab[0] = 1

tab[1] = 2

tab[2] = 3

tab[3] = // puste miejsce

tab[4] = 5

Dodam, że bardziej satysfakcjonuje mnie wariant I. Byłby on znacznie prostszy do wdrożenia podczas pisania programu:)

Dzięki z góry! :happy:

Link do komentarza
Udostępnij na innych stronach

Najprostszy sposób, niekoniecznie najlepszy to przepisanie wartości:

tab[3]=tab[4];

To co prawda nie zmniejszy rozmiaru tablicy (nadal będzie pięcioelementowa) ale da ci wynik jaki chcesz... Jeśli chciałbyś usunąć wcześniejszy (np 1) element to musisz iteracyjnie przepisać wszystkie większe tj:

tab[1]=tab[2];

tab[2]=tab[3];

itd.

Jak chcesz mieć ogólniejszą funkcję to wrzucasz pętlę for.

Oczywiście lepszym rozwiązaniem byłoby zastosowanie tablic dynamicznych, ale nie wiem na ile czujesz się mocny w C i czy rozumiesz już wskaźniki ;)

Link do komentarza
Udostępnij na innych stronach

A może C++ i std::list / std::deque ?

Generalnie tablica to pewien obszar pamięci, ciągły obszar o określonym rozmiarze. Nie bardzo można od tak sobie zmienić rozmiar tablicy, w szczególności usunąć coś ze środka.

Dlatego proponuje użyć listy, zamiast tablicy.

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...