• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak to zrozumieć? C++ implementacja

VPS Starter Arubacloud
0 głosów
2,736 wizyt
pytanie zadane 11 listopada 2016 w C i C++ przez Wiciorny Ekspert (269,120 p.)
Siemano mam takie zadanie żeby zrobić operacje dodawania/usuwania i sprawdzania ilosci elementów na liście.

Wszystko spoko- bo myslalem, że mogę to zrobić na strukturze gotowej w c++ listy i do tego uzyć funkcji.

Ale mam takie polecenie : ZAIMPLEMENTUJ LISTE OPARTĄ O TABLICE WSKAŹNIKÓW ? Jak to ma w takim razie wyglądać?

Dwa- jak alokuje pamięc ... na tablice nawet dynamiczną jak mam sprawdzić czy jest pusta ? Skoro - alokując dane wrzuca tam zazwyczaj zera?...

1 odpowiedź

0 głosów
odpowiedź 11 listopada 2016 przez Dash Nałogowiec (29,650 p.)

Odnośnie drugiego, po co chcesz sprawdzać czy zaalokowana pamięć jest pusta? Odczyt komórek tablicy, które dopiero co zostały zaalokowane to undefined behavior, nie powinno się tego robić. Jeżeli chcesz mieć tablicę powiedzmy 20 wskaźników, ale tylko częściowo wypełnioną, ustaw resztę pól na nullptr, a następnie sprawdzaj if'em czy dana komórka jest poprawna (wskaźnik na coś da true, nullptr false). 

MyClass * tab [10]; 
tab[0] = &myObject; 
tab [1] = nullptr; 

if (tab[0]) // true, ponieważ na coś wskazuje
{

}

if (tab[1]) // false, ponieważ nullptr 
{

}

 

komentarz 11 listopada 2016 przez Wiciorny Ekspert (269,120 p.)

bo mam takie zadanie wiec ...  w funkcji chce sprawdzic warunek czy  nie jest pusta lista- a problem jest w implementacji W OPARCIU O TABLICE....  bo normalnie na strukturze listy i c++ mam chociaż gotową funkcje empty. 

komentarz 11 listopada 2016 przez Dash Nałogowiec (29,650 p.)
Możesz napisać listę w oparciu o inny kontener STL? Wtedy jest możliwość pójścia na łatwiznę i napisać własną listę jako wrap na std::vector/deque , tam już masz metodę empty, dodawanie i odejmowanie elementów z listy także byłoby dużo prostsze. Jednak, jeżeli dobrze rozumiem zadanie, to mazs stworzyć klasę lista, w której będziesz miał tablicę z kolejnymi wskaźnikami na jej elementy. Tutaj pojawia się jednak problem z ograniczoną liczbą miejsc i kłopotliwym powiększaniem/pomniejszaniem tablicy. Żeby sprawdzić czy lista jest pusta, możesz albo wypełnić nieużywane pola tablicy nullptrami, a następnie iterować przez tą tablicę i sprawdzać czy któreś pole jest !=nullptr, bądź mieć dwa liczniki. Jeden zliczałby elementy dodawane, drugi usuwane, jeżeli będą równe, lista jest pusta (i to jest szybszy sposób).

Abstrahując, jaki jest sens tworzenia listy w oparciu o tablicę? Przecież lista powinna przechowywać pierwszy i ostatni element listy, a każdy element powinien mieć wskaźnik na następny element, taka jest istota listy.

Podobne pytania

0 głosów
1 odpowiedź 434 wizyt
pytanie zadane 2 grudnia 2016 w C i C++ przez Jan Kowalski Nowicjusz (150 p.)
+1 głos
1 odpowiedź 2,103 wizyt
0 głosów
3 odpowiedzi 1,928 wizyt
pytanie zadane 8 maja 2015 w C i C++ przez Wiciorny Ekspert (269,120 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...