Tablica list - wskaźniki

0

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

1

http://4programmers.net/Forum/C_i_C++/265683-listy_dwukierunkowe?p=1221015#id1221015
Do tego:

list R[numOfReg];
memset(&R,0,sizeof(R));
addhead(R+0,10);
addhead(R+1,11);

1 użytkowników online, w tym zalogowanych: 0, gości: 1