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

Jak to zrozumieć? C++ implementacja

Object Storage Arubacloud
0 głosów
2,809 wizyt
pytanie zadane 11 listopada 2016 w C i C++ przez Wiciorny Ekspert (270,190 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 (270,190 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ź 451 wizyt
pytanie zadane 2 grudnia 2016 w C i C++ przez Jan Kowalski Nowicjusz (150 p.)
+1 głos
1 odpowiedź 2,124 wizyt
0 głosów
3 odpowiedzi 1,953 wizyt
pytanie zadane 8 maja 2015 w C i C++ przez Wiciorny Ekspert (270,190 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...