Я пытаюсь выяснить, почему мой связанный список изменен в следующей структуре программы:
void edit(NODE pHead)
{
/* Why is this modifying my list ?? */
pHead->data = 1337;
}
void call(NODE *pHead)
{
NODE pFirst = *pHead;
for(int i = 0; i < 3; i++)
{
edit(*pHead);
*pHead = (*pHead)->next;
}
*pHead = pFirst;
printList(*pHead);
}
int main(int argc, char const *argv[])
{
/* A simple list */
NODE pList = NULL;
/* The number of nodes */
int n;
scanf("%d", &n);
/* Init list */
for (int i = 0; i < n; i++)
{
//Read values.
int timestamp;
float data;
scanf("%d%f", ×tamp, &data);
//Add node.
addLastNode(&pList, timestamp, data);
}
printList(pList);
call(&pList);
return 0;
}
Я просто не понимаю этого.Разве функция редактирования не должна создавать локальную копию моего связанного списка?При печати моего окончательного списка выводом является измененный список, а не исходный. Может кто-нибудь объяснить мне, что не так?Также вот моя структура списка:
/* A structure representing the node of a list */
typedef struct LIST
{
int timestamp;
float data;
struct LIST *next;
} * NODE;