我有一个链表,最后一个节点指向NULL,并有一个函数通过在while循环中遍历该列表来打印元素。我会上传我的源码,但它相当冗长,所以我会简化它。
struct xrec{
*some elements*
struct xrec *next;
};
typedef struct xrec EMPLOYEE;
void listEmployee(EMPLOYEE * list){ // list is head node
int i = 0;
while (list != NULL){
printf(*%d. print elements..*, i+1);
list = list->next; // point to next structure
i++;
}
}
我可以随意调用该函数,因为我将其设置在一个do-while循环中的switch语句中。但是,在第一次调用之后,我的头节点不会指向NULL吗?因此,我再也无法打印出元素了,对吗?但是每次调用该函数时,它总是回到第一个节点。为什么?我非常确定我在调用该函数后从未将列表重定向回第一个节点。
head = list
,然后每次从head
开始遍历。 - Marc Bhead
是哪一个。如果你指的是list
,那么在函数内部是有影响的,但函数外部没有影响(如果代码的其余部分没有影响的话)。 - Jason Hu