Tablica list - wskaźniki

Tablica list - wskaźniki
H1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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:

Kopiuj
 
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

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

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

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.