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");
}