Funkcja tworząca listę zwraca te same wartości

0

Witam, zrobiłem funkcję w C, która tworzy listę dwukierunkową w oparciu o strukturę. Przechowuje ona jako zawartość wskaźnik na voida:

typedef struct stPart stPart;
struct stPart 
{
	void *pvContent;
	stPart *pNext, *pPrev;  
};
stPart *pBegin=0;
stPart *pEnd;


stPart *fnAddInOrder(void *pvInElement)                                           //dodanie elementu w kolejności (tworzenie listy)-----------------
{    
	stPart *pNew = (stPart*)malloc(sizeof(stPart));
	pNew->pvContent=pvInElement;           
	pNew->pNext=0;    
	if (0==pBegin)  
	{
		pBegin=pNew;
		pNew->pPrev=0;  
	}
	else
	{    
		pEnd->pNext=pNew;  
		pNew->pPrev=pEnd;  
	}
	pEnd=pNew;     
	return pBegin;
}

oczywiście funkcje wypisująca oraz usuwająca listę też jest, ale w tym problemie nie ma znaczenia. Otóż, gdy wywołuję funkcję fnAddInOrder tworząc jedną listę nie ma problemu, ale gdy chcę utworzyć dwie osobne listy pojawia się problem - obydwie listy mają takie same wskaźniki :/

int main()
{
stPart *pFirst=0, *pSecond=0;
char b,c;
b="k";
c="w";

pFirst=fnAddInOrder(b);
pSecond=fnAddInOrder(c);

printf("%p\n",pFirst);
printf("%p\n",pSecond);

system("PAUSE");

}
0

Wiadomo, że błąd ten nie występuje, gdy zrobię dwa osobne pliki z tymi samymi funkcjami (oczywiście o innej nazwie), które tworzą listę, ale to troszkę nieeleganckie

0

Wygląda na to, że niepotrzebnie użyte zmienne globalne ugryzły Cię w...
I użyj NULL do wskaźników "na nic".

0

Wydziel listę (pBegin + pEnd) do osobnej struktury. Dodaj do funkcji dodających/usuwających elementy dodatkowy parametr - listę na której mają operować.

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