Cześć,
W jaki sposób zaimplementować tablicę list? Czyli tablicę, której każda komórka przechowuje głowę listy. Udało mi się zaimplementować coś takiego tyle, że problemem jest to, że operuję cały czas na jednej liście. Dodając na przykład ciąg "1234" do komórki [0], po wyświetleniu otrzymuję [1234], następnie po dodaniu "qwer" do listy z komórki [1] otrzymuję [1234qwer].
Czy mógłby ktoś wskazać gdzie jest problem? Wydaje mi się, że w przekazywaniu wskaźnika przez referencję(?). Co o tym myślicie?
Poniżej kod:
struct node
{
char v; // wartość - litera
node * next; // wskaznik na nasteony element listy
node * prev;
node();
};
void push(node * & head, node *& tail, char _v)
{
node * newN = new node;
newN->v = _v; // inicjujemy element
newN->next = nullptr;
newN->prev = tail;
tail = newN;
if (newN->prev)
newN->prev->next = newN;
else head = newN;
}
void pop(node * & head)
{
if (head == NULL) {
return;
}
else {
node * tmp = head;
head = (head)->next;
if (head) {
(head)->prev = NULL;
}
delete tmp;
}
}
int main()
{
node ** R; // rejestry - tablica list
node * tail = NULL; // ogon
int _r;
for (int i = 0; i < numOfReg; i++)
R[i] = NULL;
push(R[_r], tail, znak);
}
Z góry dziękuję za pomoc. :)
Pozdrawiam,
Patryk